簡體   English   中英

帶有gettext和editText的Nullpointer

[英]Nullpointer with gettext and editText

我是新手,我整天都在搜索解決它,你能幫助我嗎?

我正在嘗試在一個String中加入一個我在AlertDialog設置的EditText

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);

        LayoutInflater li = LayoutInflater.from(this);
        View alert = li.inflate(R.layout.alert, null);

        AlertDialog.Builder addUser = new AlertDialog.Builder(this);
        addUser.setView(alert);
        addUser.setTitle("...");
        addUser.setMessage("...");
        addUser.setCancelable(false);
        addUser.setPositiveButton(R.string.btNext, new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int id) {
        Final EditText getName = (EditText) findViewById(R.id.inUsName);
        String uName = getName.getText().toString(); //NullPointerException
                acept(v);
            }
        });
        addUser.setNegativeButton(R.string.btCancel, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                cancel();
            }
        });
        addUser.show();
    }

}

EditText ID是正確的,我有alert.xml中的所有組件(不是活動默認的xml)。

你發現錯了嗎? 我敢肯定它不是一個優化的或格式良好的代碼(它是我的第一個android嘗試)。

非常感謝。

更改此代碼。 你必須像碎片一樣提供inflater.findviewbyId:

Final EditText getName = (EditText) findViewById(R.id.inUsName);

對此:

final EditText getName = (EditText) li.findViewById(R.id.inUsName);

檢查null值。

final EditText getName = (EditText) dialog.findViewById(R.id.inUsName);
String uName = getName.getText()!=null? getName.getText().toString(): null;

如果EditText位於Layout activity_add上,則必須創建

Final EditText getName;

在活動中添加getname

getname = (EditText) findViewById(R.id.inUsName);

然后將String添加到AlertDialog

String uName = getName.getText().toString();

要么

AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Title");
alert.setMessage("Message");
// Create TextView
final TextView input = new TextView (this);
String uName = getName.getText().toString();
input.setText(uName);
alert.setView(input);

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
    // Do something with value!
  }
});

  alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface dialog, int whichButton) {
      // Canceled.
  }
});
alert.show();

您的Edittext不屬於您已使用膨脹的視圖警報

 Final EditText getName = (EditText)alert.findViewById(R.id.inUsName);
 getName.getText().toString();// will not give nullpoint exception 

代替

 Final EditText getName = (EditText) findViewById(R.id.inUsName);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM