【问题标题】:Why does this button click keep causing app to crash为什么单击此按钮会导致应用程序崩溃
【发布时间】:2014-05-07 07:27:06
【问题描述】:

您好,我是编程新手。我有一个按钮,单击该按钮应将 imageView 的图像更改为不同的图像。但是当按钮被点击时,应用程序崩溃了。我确定它是我缺少的一些小东西。 Iv 查找了错误,似乎找不到任何可以帮助解决此问题的方法。我很感谢我能得到的任何帮助。

public class MonthSelect extends Activity {

    //declaring variables
    ImageView image;
    Button jan;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_month_select);

        addListenerOnButton();
    }

    private void addListenerOnButton() {
        image = (ImageView)findViewById(R.id.monthDisplay);

        jan = (Button)findViewById(R.id.januaryButton);
        jan.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                image.setImageResource(R.drawable.a_10);

            }

        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.month_select, menu);
        return true;
    }

}

带有图像视图的 xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="#000000"
    tools:context=".MonthSelect" >

    <ImageView
        android:id="@+id/monthDisplay"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/month_quote_display"
        android:src="@drawable/a_1" />

</RelativeLayout>

错误

05-07 08:22:10.464: E/AndroidRuntime(7415): FATAL EXCEPTION: main
05-07 08:22:10.464: E/AndroidRuntime(7415): java.lang.NullPointerException
05-07 08:22:10.464: E/AndroidRuntime(7415):     at com.learning.MonthSelect$1.onClick(MonthSelect.java:54)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at android.view.View.performClick(View.java:4091)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at android.view.View$PerformClick.run(View.java:17072)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at android.os.Handler.handleCallback(Handler.java:615)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at android.os.Looper.loop(Looper.java:153)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at android.app.ActivityThread.main(ActivityThread.java:4987)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at java.lang.reflect.Method.invokeNative(Native Method)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at java.lang.reflect.Method.invoke(Method.java:511)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
05-07 08:22:10.464: E/AndroidRuntime(7415):     at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 你的按钮在哪里?
  • MonthSelect.java 的第 54 行是什么?

标签: android nullpointerexception


【解决方案1】:

您的activity_month_select.xml 文件中没有Button jan,您仍然创建jan

jan = (Button)findViewById(R.id.januaryButton);// Cause Null Pointer Exception

您需要在布局文件中添加Button,ID 为januaryButton。

【讨论】:

  • 但这不会导致 onCreate 中的 NPE 而不是 onClick 吗?
  • 按钮采用不同的 xml 布局。我想要做的是,当单击按钮时,它会打开另一个只有图像视图的 xml 布局。我做错了吗
  • 他的布局中需要一个按钮和一个图像视图
【解决方案2】:

根据您的需要,您需要在 activity_month_select 布局中有 R.id.januaryButton

如果您不想在新窗口中显示图像,只需创建另一个 Activity,将您的图像布局作为 contentview,然后在按钮的 onclick 功能中从带有按钮的 Activity 中调用带有图像的 Activity。

【讨论】:

    【解决方案3】:

    您发布的布局似乎不是 R.layout.activity_month_select,而是包含您使用的 ImageView 的单独布局。 从日志中可以看出,R.layout.activity_month_select 似乎实际上包含 ID 为 R.id.januaryButton 的按钮,但不包含 ImageView R.id.monthDisplay。

    确保它们(Button 和 ImageView)都在 R.layout.activity_month_select 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多