android应用程序中的空指针异常
我不知道为什么,但我得到了android应用程序中的空指针异常,android,Android,我不知道为什么,但我得到了空指针异常在下面的代码中,这只是基本代码,但当我点击其中一个图像时,某种东西正在导致空指针异常 public class MainActivity extends Activity implements OnClickListener{ ImageView img1,img2,img3,img4,img5,img6,img7,img8,img9; int i = 0; @Override public void onCreate(Bu
空指针异常
在下面的代码中,这只是基本代码,但当我点击其中一个图像时,某种东西正在导致空指针异常
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;
}
}
日志:
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)
E/AndroidRuntime(1399):致命异常:主
E/AndroidRuntime(1399):java.lang.NullPointerException
E/AndroidRuntime(1399):位于com.aliancegaming.duckduckgone.MainActivity.onClick(MainActivity.java:49)
E/AndroidRuntime(1399):在android.view.view.performClick(view.java:4084)上
E/AndroidRuntime(1399):在android.view.view$PerformClick.run(view.java:16966)
E/AndroidRuntime(1399):位于android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime(1399):位于android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(1399):位于android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1399):位于android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(1399):位于java.lang.reflect.Method.Invokenactive(本机方法)
E/AndroidRuntime(1399):位于java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1399):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(1399):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(1399):位于dalvik.system.NativeStart.main(本机方法)
XML布局中的所有ImageView引用都位于
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);
}
将此代码放在setContentView(R.layout.activity\u 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);
在onClick(){}中调用setcoentview()
之前,您不能调用findViewById()
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);
}
它们是全局声明的对象,未在onCreate(){}
因为在OnCreate()中,您已将newiimg1添加到img9。现在我可以打开它,但现在当我单击图像时,它会崩溃任何想法?始终在问题中添加您的logcat哪个代码位于MainActivity的第49行?最好不要在此处重复同样的问题。谢谢