java - 对话框上的 NullPointerException - Android

标签 java android dialog nullpointerexception

我正在尝试实现一个在单击按钮时出现的对话框。我按照一个例子来获取下面的代码,因为我以前从未使用过对话框。我在 Results 类中的 2 个不同位置得到了 NPE。我已在我的代码中对这两个位置进行了评论。

提前感谢您的帮助。

Java代码:

public class Results extends Activity {

    Button detailsBtn;
    final Context context = this;

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

        detailsBtn = (Button)findViewById(R.id.detailsBtn);
        detailsBtn.setText("Details");

        detailsBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {

                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.resultsdetailsdisplay);
                dialog.setTitle("Detailssss");

                TextView title = (TextView)findViewById(R.id.title);
                title.setText("TITLE - TESTING");  //NULL POINTER EXCEPTION

                Button close = (Button)findViewById(R.id.close);

                close.setOnClickListener(new OnClickListener() {  //NULL POINTER EXCEPTION
                    public void onClick(View arg0) {
                        dialog.dismiss();
                    }
                });
            }
        });
    }
}

结果详细信息显示.xml:

<RelativeLayout 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/scroll" >

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="12sp"
        android:layout_centerHorizontal="true"
        android:gravity="center" />
</RelativeLayout>

LogCat 输出

02-13 18:36:39.900: E/AndroidRuntime(767): java.lang.NullPointerException
02-13 18:36:39.900: E/AndroidRuntime(767):  at matt.lyons.bibletrivia.Results$4.onClick(Results.java:85)
02-13 18:36:39.900: E/AndroidRuntime(767):  at android.view.View.performClick(View.java:4084)
02-13 18:36:39.900: E/AndroidRuntime(767):  at android.view.View$PerformClick.run(View.java:16966)
02-13 18:36:39.900: E/AndroidRuntime(767):  at android.os.Handler.handleCallback(Handler.java:615)
02-13 18:36:39.900: E/AndroidRuntime(767):  at android.os.Handler.dispatchMessage(Handler.java:92)
02-13 18:36:39.900: E/AndroidRuntime(767):  at android.os.Looper.loop(Looper.java:137)
02-13 18:36:39.900: E/AndroidRuntime(767):  at android.app.ActivityThread.main(ActivityThread.java:4745)
02-13 18:36:39.900: E/AndroidRuntime(767):  at java.lang.reflect.Method.invokeNative(Native Method)
02-13 18:36:39.900: E/AndroidRuntime(767):  at java.lang.reflect.Method.invoke(Method.java:511)
02-13 18:36:39.900: E/AndroidRuntime(767):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-13 18:36:39.900: E/AndroidRuntime(767):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-13 18:36:39.900: E/AndroidRuntime(767):  at dalvik.system.NativeStart.main(Native Method)

最佳答案

使用对话框对象:

TextView title = (TextView) dialog.findViewById(R.id.title);

Button close = (Button) dialog.findViewById(R.id.close);

按照规定here : findViewById - 查找由 onCreate(Bundle) 中处理的 XML 中的 id 属性标识的 View 。

您的对话框是在事后加载的,因此只有对话框上下文知道这些 View 。

关于java - 对话框上的 NullPointerException - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865147/

相关文章:

java - 进度计数未显示 100%

java - 在 JPA 中使用 @SequenceGenerator/@GenerateValue 时 - 数据库触发器是否多余/不必要?

java - 如何提取多个花括号之间的元素

java - 无法解析符号 'execute',android studio 8.0 beta

android - 对话框打开时状态栏图标变暗

java - 集成 Maven 报告插件

android - 权限拒绝 : not allowed to send broadcast in android

android - java.io.UnsupportedEncodingException : java. nio.charset.CharsetICU[UTF-8]

java - RecyclerView 中的复选框变为 'sticky'

jquery - 如何使用jquery提示浏览器显示打开/保存对话框?