【问题标题】:Custom Dialog EditText returns null自定义对话框 EditText 返回 null
【发布时间】:2012-05-31 07:05:24
【问题描述】:

很多人都遇到过类似的问题,我想我已经关注并修复了 stackoverflow 上所有这些帖子中提到的所有问题。

  • setContentView 到我的布局
  • 用 dialog.findViewById 初始化编辑文本

但我仍然卡在空指针上。我错过了什么?

布局名称是 serverchange.xml。 serverchange.xml 的内容是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<EditText
    android:id="@+id/server"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="textUri" />

<TextView
    android:id="@+id/status"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:editable="true" />

</LinearLayout>

通过选择选项菜单上的菜单来创建对话框。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.serverChange:
        showDialog(SERVER_CHANGE);
        // newGame();
        return true;
    }
}

我在

得到一个 NullPointerException
if (changeServerView == null) throw new NullPointerException() ;

代码:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case SERVER_CHANGE:
        serverChangeDialog = new Dialog(this);
        serverChangeDialog.setContentView(R.layout.serverchange);
        serverChangeDialog.setTitle("Change Server");
        serverChangeDialog.setOnKeyListener(this);
        serverChangeDialog.show();
        changeServerView = (EditText) serverChangeDialog.findViewById(R.id.serverChange);
        status = (TextView) serverChangeDialog.findViewById(R.id.status);
        if (changeServerView == null) throw new NullPointerException() ;
    }
    return null;
}

我的 onKey 实现

@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
    if (dialog == serverChangeDialog) {
        if (keyCode == KeyEvent.KEYCODE_ENTER) {
            String backupServer = server;
            server = changeServerView.getText().toString();

这里我也得到了 NullPointerException。

【问题讨论】:

    标签: android-layout android-edittext android-dialog


    【解决方案1】:

    来自 xml 文件的错误 id 引用,

    使用server 代替 serverChange

    changeServerView = (EditText) serverChangeDialog.findViewById(R.id.server);
                                                                       ^^^^^^  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多