【问题标题】:null pointer exception android when starting the activity启动活动时出现空指针异常android
【发布时间】:2014-04-12 21:43:27
【问题描述】:

您好,我正在创建一些图像按钮,然后在点击侦听器上添加一些,但我收到了这个空指针异常错误。如果这更有帮助,我也包括了 logcat。有什么建议吗?非常感谢!

     import android.app.Activity;
     import android.content.Intent;
     import android.os.Bundle;
     import android.util.Log;
     import android.view.Menu;
     import android.view.MenuItem;
     import android.view.View;
     import android.view.View.OnClickListener;
     import android.widget.ImageButton;

    public class menuloader extends Activity {
private final String TAG = "Main Activity";
ImageButton imgButton1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menulayout);
    addButtonListener1();
    addButtonListener2() ;
    addButtonListener3() ;
    addButtonListener4() ;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    Log.i(TAG,"OnCreate");
    return true;
}

public void addButtonListener1() {

    imgButton1 = (ImageButton) findViewById(R.id.imageBtn1);
    imgButton1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getApplicationContext(), 
          bars.class);
            startActivity(intent);
        }
    });
}
    public void addButtonListener2() {

        imgButton1 = (ImageButton) findViewById(R.id.imageButton2);
        imgButton1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), 
              ListViews.class);
                startActivity(intent);
            }
        });
}
    public void addButtonListener3() {

        imgButton1 = (ImageButton) findViewById(R.id.imageButton3);
        imgButton1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(),
     barsandrest.class);
                startActivity(intent);
            }
        });
}
    public void addButtonListener4() {

        imgButton1 = (ImageButton) findViewById(R.id.imageButton4);
        imgButton1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(),    
           events.class);
                startActivity(intent);
            }
        });
   }
         }

LOGCAT

 03-09 22:20:23.173: E/AndroidRuntime(8267): Caused by: java.lang.NullPointerException
 03-09 22:20:23.173: E/AndroidRuntime(8267):    at 
 com.example.demomap.menuloader.addButtonListener1(menuloader.java:54)
 03-09 22:20:23.173: E/AndroidRuntime(8267):    at com.example.demomap.menuloader.onCreate  
 (menuloader.java:23)
 03-09 22:20:23.173: E/AndroidRuntime(8267):    at android.app.Activity.performCreate       
 (Activity.java:5133)
 03-09 22:20:23.173: E/AndroidRuntime(8267):    at  
 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
 03-09 22:20:23.173: E/AndroidRuntime(8267):    at 
 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)

【问题讨论】:

    标签: android nullpointerexception imagebutton null-pointer


    【解决方案1】:

    找不到 R.id.imageBtn1,所以 findViewById 返回 null。然后,当您尝试设置 onClickListener 时,它会引发异常。您可以通过添加空检查来避免异常,但要解决实际问题,您需要确保 id 在活动的视图中。

    【讨论】:

    • 您好,感谢您的回复。我确保 imageBtn1 在活动中。这也是我的第一个想法,但似乎还有其他问题。
    • 我更改了图像按钮的名称,它给了我一个错误,说(按钮的新名称)无法解析或不是一个字段。有什么建议吗?
    【解决方案2】:

    如果你做的一切都正确,但仍然抛出异常,试试 Project -> Clean...

    Similar post

    【讨论】:

    • 所有文件都无法识别 R.layout .... 你毁了我的整个应用程序!!!
    • 阅读:post。清理项目会删除所有自动生成的文件。构建项目它应该自动创建它们。清理项目时,可以选择在清理后立即开始构建。
    • 如果您在“项目”菜单下选中了“自动构建”选项,则项目应在清理后自动生成 gen 文件夹中的文件。 R.java 文件位于该文件夹中。 Here 有很多信息。
    • 我构建了它,它仍然是一样的任何建议?
    • 有时 Eclipse 会抱怨一个文件,例如找不到 R.layout.main。签入您没有导入 android.R 的源代码。 android.R 导入将阻止 Eclipse 找到您的 R 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    相关资源
    最近更新 更多