android - 在 Android 应用 中,空指针异常

  显示原文与译文双语对照的内容
134 3

这就是为什么在我点击这个代码的时候,它只是基本代码,但是有些事情会导致空指针异常

public class MainActivity extends Activity implements OnClickListener{
 ImageView img1,img2,img3,img4,img5,img6,img7,img8,img9;
 int i = 0;
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 ImageView img1 = (ImageView) findViewById(R.id.ImageView01);
 ImageView img2 = (ImageView) findViewById(R.id.ImageView02);
 ImageView img3 = (ImageView) findViewById(R.id.ImageView03);
 ImageView img4 = (ImageView) findViewById(R.id.ImageView04);
 ImageView img5 = (ImageView) findViewById(R.id.ImageView05);
 ImageView img6 = (ImageView) findViewById(R.id.ImageView06);
 ImageView img7 = (ImageView) findViewById(R.id.ImageView07);
 ImageView img8 = (ImageView) findViewById(R.id.ImageView08);
 ImageView img9 = (ImageView) findViewById(R.id.ImageView09); 
 img1.setOnClickListener(this); 
 img2.setOnClickListener(this); 
 img3.setOnClickListener(this); 
 img4.setOnClickListener(this);
 img5.setOnClickListener(this); 
 img6.setOnClickListener(this);
 img7.setOnClickListener(this);
 img8.setOnClickListener(this);
 img9.setOnClickListener(this);
 if(i == 8){
//show dialog
 Toast.makeText(getApplicationContext(),"You clicked all 9", Toast.LENGTH_LONG).show();
 }
 }
 @Override
 public void onClick(View v) {
 switch (v.getId()) {
 case R.id.ImageView01:
//do something
 img1.setVisibility(View.GONE);
 i = i + 1;
 break;
 case R.id.ImageView02:
//do something
 img2.setVisibility(View.GONE);
 i = i + 1;
 break;
 case R.id.ImageView03:
//do something 
 img3.setVisibility(View.GONE);
 i = i + 1;
 break;
 case R.id.ImageView04:
//do something
 img4.setVisibility(View.GONE);
 i = i + 1;
 break;
 case R.id.ImageView05:
//do something
 img5.setVisibility(View.GONE);
 i = i + 1;
 break;
 case R.id.ImageView06:
//do something
 img6.setVisibility(View.GONE);
 i = i + 1;
 break;
 case R.id.ImageView07:
//do something
 img7.setVisibility(View.GONE);
 i = i + 1;
 break;
 case R.id.ImageView08:
//do something
 img8.setVisibility(View.GONE);
 i = i + 1;
 break;
 case R.id.ImageView09:
//do something
 img9.setVisibility(View.GONE);
 i = i + 1;
 break;
 }
 }

aecq:

E/AndroidRuntime( 1399): FATAL EXCEPTION: main
E/AndroidRuntime( 1399): java.lang.NullPointerException
E/AndroidRuntime( 1399): at com.aliancegaming.duckduckgone.MainActivity.onClick(MainActivity.java:49)
E/AndroidRuntime( 1399): at android.view.View.performClick(View.java:4084)
E/AndroidRuntime( 1399): at android.view.View$PerformClick.run(View.java:16966)
E/AndroidRuntime( 1399): at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime( 1399): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 1399): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 1399): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime( 1399): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1399): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 1399): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime( 1399): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 1399): at dalvik.system.NativeStart.main(Native Method)
时间:原作者:0个回答

102 5

所有来自XML布局的imageViews refrences都setContentView(R.layout.activity_main);

ImageView img1,img2,img3,img4,img5,img6,img7,img8,img9; 
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 img1 = (ImageView) findViewById(R.id.ImageView01);
 img2 = (ImageView) findViewById(R.id.ImageView02);
 img3 = (ImageView) findViewById(R.id.ImageView03);
 img4 = (ImageView) findViewById(R.id.ImageView04);
 img5 = (ImageView) findViewById(R.id.ImageView05);
 img6 = (ImageView) findViewById(R.id.ImageView06);
 img7 = (ImageView) findViewById(R.id.ImageView07);
 img8 = (ImageView) findViewById(R.id.ImageView08);
 img9 = (ImageView) findViewById(R.id.ImageView09);
 img1.setOnClickListener(this); 
 img2.setOnClickListener(this); 
 img3.setOnClickListener(this); 
 img4.setOnClickListener(this);
 img5.setOnClickListener(this); 
 img6.setOnClickListener(this);
 img7.setOnClickListener(this);
 img8.setOnClickListener(this);
 img9.setOnClickListener(this);
}
原作者:
101 3
ImageView img1,img2,img3,img4,img5,img6,img7,img8,img9;
int i = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
img1 = (ImageView) findViewById(R.id.ImageView01);
img2 = (ImageView) findViewById(R.id.ImageView02);
img3 = (ImageView) findViewById(R.id.ImageView03);
img4 = (ImageView) findViewById(R.id.ImageView04);
img5 = (ImageView) findViewById(R.id.ImageView05);
img6 = (ImageView) findViewById(R.id.ImageView06);
img7 = (ImageView) findViewById(R.id.ImageView07);
img8 = (ImageView) findViewById(R.id.ImageView08);
img9 = (ImageView) findViewById(R.id.ImageView09); 
}
原作者:
104 5

onClick() 中,你使用的是英镑的img1

全局对象状态,在 onCreate() {} 中不是初始化

因为在 OnCreate() 中,你花费了英镑的新

原作者:
110 5

将这里代码置于下面setContentView(R.layout.activity_main)内部 onCreate

img1 = (ImageView) findViewById(R.id.ImageView01);
img2 = (ImageView) findViewById(R.id.ImageView02);
img3 = (ImageView) findViewById(R.id.ImageView03);
img4 = (ImageView) findViewById(R.id.ImageView04);
img5 = (ImageView) findViewById(R.id.ImageView05);
img6 = (ImageView) findViewById(R.id.ImageView06);
img7 = (ImageView) findViewById(R.id.ImageView07);
img8 = (ImageView) findViewById(R.id.ImageView08);
img9 = (ImageView) findViewById(R.id.ImageView09);
原作者:
...