В чем проблемы, когда я использую «.getText ().toString ();»

#android-widget

#android-виджет

Вопрос:

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            EditText nameText = (EditText) findViewById(R.id.editText1);
            name = nameText.getText().toString();
            nameText.setText("");
            EditText numberText = (EditText) findViewById(R.id.editText2);
            number = numberText.getText().toString();
            numberText.setText("");
            person = new Person(name, number);
            order.add(person);

            PersonAdapter pa = new PersonAdapter(con, R.layout.row, order);
            setListAdapter(pa);
        }
    });
}

@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
    // TODO Auto-generated method stub
    final int index = position;
    AlertDialog.Builder aDialog = new AlertDialog.Builder(this);
    aDialog.setTitle("What do you want??");
    aDialog.setPositiveButton("Delete",
            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    order.remove(index);
                    PersonAdapter pa = new PersonAdapter(con, R.layout.row,
                            order);
                    setListAdapter(pa);
                }
            });

    aDialog.setNeutralButton("Edit", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub

            LayoutInflater inflater = (LayoutInflater) con.getSystemService(LAYOUT_INFLATER_SERVICE);
            View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup)findViewById(R.id.root_layout));
            builder = new AlertDialog.Builder(con);
            builder.setView(layout);
            builder.setTitle("Fill EditText");
            builder.setIcon(R.drawable.icon);
            editNum = (EditText)findViewById(R.id.editNum);
            editName = (EditText)findViewById(R.id.editName);
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub

                    name = editName.getText().toString();
                    number = editNum.getText().toString();

                    order.set(position, new Person(name,number));

                    PersonAdapter pa = new PersonAdapter(con, R.layout.row, order);
                    setListAdapter(pa);
                }
            });

            builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                }
            });

            alertDialog = builder.create();
            alertDialog.show();

        }
    });

    aDialog.setNegativeButton("Cancel",
            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub

                }
            });
    AlertDialog ad = aDialog.create();
    ad.show();
}


public PersonAdapter(Context context, int textViewResourceId,
        ArrayList<Person> items) {
    super(context, textViewResourceId, items);
    this.items = items;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
        LayoutInflater vi = (LayoutInflater) getContext().getSystemService(
                Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.row, null);
    }

    Person p = items.get(position);
    if (p != null) {
        TextView tt = (TextView) v.findViewById(R.id.android_toptext);
        TextView bt = (TextView) v.findViewById(R.id.android_bottomtext);
        if (tt != null) {
            tt.setText(p.getName());
        }
        if (bt != null) {
            bt.setText("TEL : "   p.getNumber());
        }
    }
    return v;
}

private String name;
private String number;

public Person(String name, String number) {
    this.name = name;
    this.number = number;
}

public String getName() {
    return name;
}

public String getNumber() {
    return number;
}
  

}

Я практикую виджет (именно я создаю пользовательский диалог) и прослушиватель в Android. Но я останавливаюсь сейчас, потому что «.getText ().toString();» выдает ошибку… Я не могу понять .. T ^ T Пожалуйста, помогите мне… почему это приводит к ошибке?? Я думаю, что у него нет проблем

Комментарии:

1. какую ошибку вы получаете …?

2. Приложение XXXXX неожиданно остановилось. Попробуйте еще раз….

Ответ №1:

Вы должны объявить свой EditText глобальный

 EditText editName; 
EditText editNum;

@Override
    public void onCreate(Bundle savedInstanceState) {
...
}
  

…..

  @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub

            LayoutInflater inflater = (LayoutInflater) con.getSystemService(LAYOUT_INFLATER_SERVICE);
            View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup)findViewById(R.id.root_layout));
            builder = new AlertDialog.Builder(con);
            builder.setView(layout);
            builder.setTitle("Fill EditText modificated");
            builder.setIcon(R.drawable.icon);
            editName = (EditText)findViewById(R.id.editName);
            editNum = (EditText)findViewById(R.id.editNum);
  

Комментарии:

1. Это тоже приводит к ошибке… Хотя я его изменил… Когда я редактирую исходный код, он является полным исходным кодом…

2. Он работает хорошо.. но «приложение XXXXX неожиданно остановилось. пожалуйста, попробуйте еще раз.» появляется в AVD…

3. да, но вы можете получать результат ошибки в Logcat, пожалуйста, проверьте это и дайте мне или опубликуйте полный код, который вы пытаетесь…

4. вау… Я использую Logcat впервые.. интересно… Кажется, что исключение NullPointerException приводит к ошибке…

5. Ну, я не могу сказать вам отсюда, где он выдает исключение нулевого указателя, которое вам, возможно, придется опубликовать в code buddy.