2013-07-31 64 views
1

我有一些麻煩,從活動中得到的結果。 我用startActivityForResult(),但是當我打電話finish()在第二活動,我的應用程序崩潰 !onActivityResult沒有得到也稱logcat的工作不正常

MainActivity:

​​

} `

在我的第二個活動:

public void finishActivity(int position){ 
    Intent resultIntent = new Intent(this, MainActivity.class); 


    resultIntent.putExtra("CurrentImage", position); 
    setResult(RESULT_OK, resultIntent); 
    finish(); 


} 

我已經縮小的問題finish()。註釋掉finish()可讓應用程序運行正常,但當finish()被稱爲應用程序崩潰。任何人都知道這是爲什麼?

CNC中 onActivityResult:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    Toast.makeText(getApplicationContext(), "onActivityResult Called!!", Toast.LENGTH_LONG).show(); 
    if(resultCode == RESULT_OK){ 
     if(requestCode == SET_IMAGE){ 
      int position; 
      position = (Integer) data.getExtras().get("CurrentImage"); 

      ImageView currentImage = (ImageView) findViewById(R.id.imageView); 
      currentImage.setImageResource(ImageAdapter.images[position]); 

      WallpaperManager wpm = WallpaperManager.getInstance(this); 
      try { 
       wpm.setResource(ImageAdapter.images[position]); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Toast.makeText(getApplicationContext(), "WALL PAPER SET!! :b", Toast.LENGTH_LONG).show(); 
     } 

    } 

} 

CNC中 我的繼承人的logcat(最後笑):

thread exiting with uncaught exception (group=0x40a71930) 
E/AndroidRuntime(667): FATAL EXCEPTION: main 
E/AndroidRuntime(667): java.lang.RuntimeException: Failure delivering result  ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {com.mrsai.profilepic/com.mrsai.profilepic.MainActivity}: java.lang.NullPointerException 
E/AndroidRuntime(667):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3319) 
E/AndroidRuntime(667):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362) 
E/AndroidRuntime(667):  at android.app.ActivityThread.access$1100(ActivityThread.java:141) 
E/AndroidRuntime(667):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282) 
E/AndroidRuntime(667):  at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(667):  at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(667):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
E/AndroidRuntime(667):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(667):  at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(667):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
E/AndroidRuntime(667):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
E/AndroidRuntime(667):  at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(667): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(667):  at com.mrsai.profilepic.MainActivity.onActivityResult(MainActivity.java:34) 
E/AndroidRuntime(667):  at android.app.Activity.dispatchActivityResult(Activity.java:5293) 
E/AndroidRuntime(667):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3315) 
E/AndroidRuntime(667):  ... 11 more 
Sending signal. PID: 667 SIG: 9 

解決 *

固定我的問題我在我的XML佈局中沒有引用,因爲我沒有膨脹它。 Codemagic使我認識到這一點:]感謝的人

+4

你的logcat說什麼? –

+2

你可能也想發佈你的onActivityResult方法。 – user2483079

+0

您需要發佈onActivityResult功能和日誌貓錯誤對於任何一個能夠幫助你 – Boardy

回答

0

我認爲問題是,你正在創建你的MainActivity這裏

Intent resultIntent = new Intent(this, MainActivity.class); 

變化的新實例代碼以

public void finishActivity(int position){ 
    Intent resultIntent = new Intent(); 

    resultIntent.putExtra("CurrentImage", position); 
    setResult(RESULT_OK, resultIntent); 
    finish(); 

} 

當您創建這樣一個新實例,onCreate()將被調用而不是onActivityResult()。使用空構造函數onActivityResult()將在setResult()之後調用。

Docs

+0

爲了擴大在這一答案 - 在[活動文檔(http://developer.android.com/reference/android/app /Activity.html)表明傳遞給'setResult(int,Intent)'的Intent包含結果數據;因爲OP似乎正在使用Intent,所以不會使用Intent來啓動一個Activity。 –

+0

是的,我改變了那條線,因爲我不知道還有什麼可以嘗試大聲笑嗯,我改變了線你告訴我改變,但我得到了同樣的結果,這帶來了我的下一個問題,導致我的logcat hasnt最近工作。現在即時通訊使用我的S4運行我的應用程序,但自從logcat停止工作後,我開始使用模擬器,但現在logcat不能在模擬器上工作:/它可能是我的驅動程序的問題? – HighMrSai

+0

這取決於你的意思,它不工作... – codeMagic

相關問題