2016-03-15 45 views
0

我剛開始學習android,試圖用3個單選按鈕和另一個按鈕創建一個應用程序。當選中一個單選按鈕並按下按鈕時,我打開一個新的活動,並顯示相應的圖像。但我不斷收到這個異常。我如何解決它? 下面是我的主類的代碼(圖像列表)java.lang.NullPointerException:試圖調用虛擬方法'java.lang.String android.content.Context.getPackageName()'

Intent intent= new Intent(Imagelist.this,Image_Activity.class); 
    public void onRadioButtonClicked(View view) { 

     boolean checked = ((RadioButton) view).isChecked(); 

     switch(view.getId()) { 
      case R.id.image1: 
       if (checked) 
        intent.putExtra("image", R.drawable.pic1); 
        break; 
      case R.id.image2: 
       if (checked) 
        intent.putExtra("image",R.drawable.pic2); 
        break; 
      case R.id.image3: 
       if(checked) 
        intent.putExtra("image",R.drawable.pic3); 
        break; 
     } 
    } 
    public void sendMessage(View view){ 
     Bundle extras = intent.getExtras(); 
     if (extras != null) 
     startActivity(intent); 

    } 

和我的第二個活動(Image_Activity),我把這個在OnCreate()方法

ImageView image_view= (ImageView) findViewById(R.id.picture); 
//picture is the id of the imageview in the xml file 

Intent intent1= getIntent() ; 
Bundle extras = intent1.getExtras(); 
if (extras != null) { 
    if (extras.containsKey("image")) { 
     int imageId = intent1.getIntExtra("image", 0); 
     image_view.setImageResource(imageId); 
    } 
} 

的logcat的說明這一點,

FATAL EXCEPTION: main 
     Process: com.example.sharath.imageapp, PID: 27615 
     java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.sharath.imageapp/com.example.sharath.imageapp.Imagelist}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2290) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442) 
      at android.app.ActivityThread.access$800(ActivityThread.java:156) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:211) 
      at android.app.ActivityThread.main(ActivityThread.java:5371) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:945) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740) 
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
      at android.content.ContextWrapper.getPackageName(ContextWrapper.java:132) 
      at android.content.ComponentName.<init>(ComponentName.java:77) 
      at android.content.Intent.<init>(Intent.java:4161) 
      at com.example.sharath.imageapp.Imagelist.<init>(Imagelist.java:57) 
      at java.lang.reflect.Constructor.newInstance(Native Method) 
      at java.lang.Class.newInstance(Class.java:1606) 
      at android.app.Instrumentation.newActivity(Instrumentation.java:1066) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)  
      at android.app.ActivityThread.access$800(ActivityThread.java:156)  
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)  
      at android.os.Handler.dispatchMessage(Handler.java:102)  
      at android.os.Looper.loop(Looper.java:211)  
      at android.app.ActivityThread.main(ActivityThread.java:5371)  
      at java.lang.reflect.Method.invoke(Native Method)  
      at java.lang.reflect.Method.invoke(Method.java:372)  
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:945)  
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740)  
+0

'NullPointerException:試圖調用虛擬方法'java.lang.String android.content.Context.getPackageName()' –

+0

問題在這裏'startActivity(intent);' –

+0

我讀了這個線程,但看到我沒有使用適配器我認爲這個問題是由於別的東西 – Jacksparrow

回答

0

移動

Intent intent= new Intent(Imagelist.this,Image_Activity.class); 

public void sendMessage(View view){ 
     Bundle extras = intent.getExtras(); 
     if (extras != null) { 
      Intent intent= new Intent(Imagelist.this,Image_Activity.class); 
      startActivity(intent); 
     } 
} 

Intent intent; 
public void onRadioButtonClicked(View view) { 

    intent = new Intent(Imagelist.this,Image_Activity.class); 
    // same as it is right now 
} 

public void sendMessage(View view){ 
      if (intent != null) { 
       Bundle extras = intent.getExtras(); 
       startActivity(intent); 
      } 
} 
如果在類範圍實例意圖

,上下文不爲空,因爲Activity沒有經過其初始生命週期,因此,在你的情況下,你傳遞null作爲第一個參數

+0

if i move Intent intent = new Intent(Imagelist.this,Image_Activity.class);進入sendMessage,我怎麼能在onRadioButtonClicked方法中添加額外功能?(因爲intent現在是本地發送消息) – Jacksparrow

+0

它崩潰,如果我不選擇單選按鈕並按發送 – Jacksparrow

+0

您是否檢查'if(intent!= null){' ?你做了我寫的東西嗎? – Blackbelt

相關問題