2012-03-10 10 views
0

メインアクティビティから子アクティビティを呼び出すとします。この間、私はそれにリンクされたハッシュセットを渡す必要があります。 子アクティビティで、このハッシュセットに対して何らかの操作を実行したい場合は、 子アクティビティのダイアログの[OK]ボタンをクリックすると、この新しいリンク先ハッシュセットをpareentに戻したいと考えています。元HashSetの送信中に結果の配信に失敗しました。ResultInfo {who = null、request = 200、result = -1、data = Intent

現在、私は親アクティビティに次のコードを使用しています:

Bundle bundle = new Bundle(); 
       bundle.putSerializable("keyThumbNails", thumbNailsLnkdhs); 

       Intent AndroidCustomGalleryActivityIntent = new Intent(parentActivity.this, childActivity.class); 
       childActivity.putExtras(bundle); 
       startActivityForResult(childActivity,200); 



Log.d(LOGGER, "ChildyActivityIntent called "); 

それが正常に動作しています。 私は子アクティビティでこのハッシュセットを受け取ることができます。私はそれを操作できます。

私は、次のコードを使用して、新しいHashSetのを送信しようとしていますが:

new AlertDialog.Builder(this) 
      .setMessage(mymessage) 
      .setTitle(title) 

      .setNeutralButton(android.R.string.ok, 
      new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton){ 
       Log.d(LOGGER, "AlertDialog neutral btn"); 
//     // the button was clicked 
        Bundle bundleToSend = new Bundle(); 
        bundleToSend.putSerializable("keyThumbNailsOfSelectedImages", SelectedThumbnailsPathsLnkdhs); 

        Intent SearchWebForWallPaperActivityIntent = new Intent(AndroidCustomGalleryActivity.this, SearchWebForWallPaperActivity.class); 
        SearchWebForWallPaperActivityIntent.putExtra("RESULT",bundleToSend); 
        setResult(Activity.RESULT_OK, SearchWebForWallPaperActivityIntent); 
        finish(); 
      } 
      }) 
      .show(); 
     } 

これが適切にshwonされます。私は長い間、物事の多くは、検索を試してみました

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) {  
     super.onActivityResult(requestCode, resultCode, data); 
     switch(requestCode) { 
     case (200) : { 
      if (resultCode == Activity.RESULT_OK) { 
       Log.d(LOGGER, "inside RESULT OK"); 
       //Bundle revievedBundle = this.getIntent().getExtras(); 
       Bundle recievedBundle = data.getExtras(); 
       Log.d(LOGGER, "got bundle"); 
      // if(recievedBundle.isEmpty()){ 
        //Log.d(LOGGER, "its empty"); 
       //} 
       SelectedThumbnailsPathsLnkdhs = (LinkedHashSet<String>) recievedBundle.getSerializable("keyThumbNailsOfSelectedImages"); 
      Log.d(LOGGER, "ThumbNailsLnkdhs size in SearchWebForWallPaperActivity intent: "+SelectedThumbnailsPathsLnkdhs.size()); 

      Toast.makeText(getApplicationContext(), 
         "ThumbNailsLnkdhs size in old intent: "+SelectedThumbnailsPathsLnkdhs.size(), Toast.LENGTH_LONG).show(); 

      } 
      break; 
     } 
     } 
    } 

親アクティビティで

私はこのHashSetのを受け取るためのコードを、以下の使用しています...このコードは、ログに記録された「バンドルました」の後に問題を抱えています...それを働かせてください。 しかし、成功:( を誰もがこのコードを見て、私を助けることができるcouldntの??

に続いては、logcatの痕跡である:

03-11 00:24:20.310: D/ADITYA(3959): inside RESULT OK 
03-11 00:24:20.310: D/ADITYA(3959): got bundle 
03-11 00:24:20.341: D/AndroidRuntime(3959): Shutting down VM 
03-11 00:24:20.341: W/dalvikvm(3959): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
03-11 00:24:20.420: E/AndroidRuntime(3959): FATAL EXCEPTION: main 
03-11 00:24:20.420: E/AndroidRuntime(3959): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=200, result=1, data=Intent { cmp=com.practice.wallpaper/.SearchWebForWallPaperActivity (has extras) }} to activity {com.practice.wallpaper/com.practice.wallpaper.SearchWebForWallPaperActivity}: java.lang.NullPointerException 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3515) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at android.app.ActivityThread.access$2800(ActivityThread.java:125) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at android.os.Looper.loop(Looper.java:123) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at dalvik.system.NativeStart.main(Native Method) 
03-11 00:24:20.420: E/AndroidRuntime(3959): Caused by: java.lang.NullPointerException 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at com.practice.wallpaper.SearchWebForWallPaperActivity.onActivityResult(myActivity.java:198) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at android.app.Activity.dispatchActivityResult(Activity.java:3890) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3511) 
03-11 00:24:20.420: E/AndroidRuntime(3959):  ... 11 more 
+0

表示するスタックトレースが –

+0

は私の質問、コメントを追加しましたlogcatトレースを編集してください。ありがとうございます。 – adityag

+0

こんにちは、なぜあなたは 'putSerializable'を使用していますか? –

答えて

0

ソリューション:

を使用して、SurfaceChanged時のビットマップを描きます画像をロードするかどうかをフラグする

MediaStoreアクティビティが選択を返す直後に、SurfaceViewはその時点で描画される準備ができていないようです。

https://stackoverflow.com/a/4891558/4339857

関連する問題