2015-12-08 22 views
1

我想從(--- 2)等下一個活動接收上一個活動中的數據。我試過,但沒有收到第二次到第一次活動的數據。如何接收Android中以前的活動中的數據

這是第一Cativity

Intent i = new Intent(CustomActionActivity.this, Edit_Post.class); 
        i.putExtra("ActivityId", getItemActivity); 
        i.putExtra("Vessel", strVesselName); 
        i.putExtra("HashTag", strHashTag); 
        i.putExtra("RemarkTitle", strRemark); 
        i.putExtra("ShortRGN", strShortTypeRGN); 
        i.putExtra("VessId", strvesselid); 
        startActivity(i); 

這是第二次活動

Intent intent = getIntent(); 
    strActivityId = intent.getStringExtra("ActivityId"); 
    strVesselName = intent.getStringExtra("Vessel"); 
    strHashTag = intent.getStringExtra("HashTag"); 
    strRemark = intent.getStringExtra("RemarkTitle"); 
    strShortRGN = intent.getStringExtra("ShortRGN"); 
    strVessId = intent.getStringExtra("VessId"); 


img_AddPostAudio.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent i = new Intent(Edit_Post.this, EditRecord.class); 
       i.putExtra("EditVesselId", strVessId); 
       i.putExtra("EditActivityId" , strActivityId); 
       startActivity(i); 

      } 
     }); 


protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode==REQUEST_CODE) 
      { 
       String audioString=data.getStringExtra("AUDIO_STRING"); 
       Log.e(" audioString "," = "+audioString); 
      } 
     } 

這是第三個活動

Intent intent = getIntent(); 
     vesselId = intent.getStringExtra("EditVesselId"); 
     strActivityId = intent.getStringExtra("EditActivityId"); 

Intent intent=new Intent(EditRecord.this, Edit_Post.class); 
       intent.putExtra("AUDIO_STRING",newAudioFile); 
       setResult(REQUEST_CODE, intent); 
       finish(); 
+1

但爲此,您的第一個活動必須通過startActivityForResult開始您的第二個活動,確保您正在執行此操作。你在做這個嗎? – Sandy

+0

沒有其實我只用這個意圖我=新的意圖(First.this,Second.class);一世。putExtra(「HashTag」,strHashTag); startActivity(ⅰ); –

+0

您必須在FirstActivity中使用'startActivityForResult(..)',然後使用secondActivity中的現有代碼。 –

回答

2

做到這一點,當你呼叫的第二個活動

Intent i = new Intent(CustomActionActivity.this, Edit_Post.class); 
     i.putExtra("HashTag", strHashTag); 
     startActivityForResult(i, REQUEST_CODE); 

現在您需要在CustomActionActivity上設置所需結果

例如,

Intent intent=new Intent(); 
intent.putExtra("MESSAGE",message); 
setResult(REQUEST_CODE,intent); 
finish(); 

現在你會得到這樣的數據給你的第一個活動

例如

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
      super.onActivityResult(requestCode, resultCode, data); 

       if(requestCode==REQUEST_CODE) 
        { 
         String message=data.getStringExtra("MESSAGE"); 
         textView1.setText(message); 
        } 
} 

讓我知道的任何問題

+0

如何在Edit_Post類中接收數據 –

+0

它不起作用 –

+0

@ p.ld它在我的情況下工作我測試了它可以發佈你的這3個代碼你有什麼我有幫助 – Sandy

0

使用SharedPreferences 店的情況下在SharedPreference數據和訪問它從其他活動的SharedPreference。 將數據添加到SharedPreference中的onStop爲第二活性和的onCreate訪問它在OnCreate其他活動的

@Override 
public void onStop(){//Where you wish to insert data 
    SharedPreferences data=getSharedPreferences(PREFS_FILE,0); 
    SharedPreferences.Editor editor= count.edit(); 
    editor.put("data","DATA"); 
    editor.apply(); 
    super.onStop(); 

} 

()其他活動:

SharedPreferences data = getApplicationContext().getSharedPreferences(PREFS_FILE, 0); 
String dataString=data.get("Data",0); 

希望這有助於。乾杯。

1

我在做這樣的工作對我來說: 活動2: 公共無效onBackPressed(){// TODO自動生成方法存根

Intent intent = new Intent(); 
    intent.putExtra("MESSAGE", strtext + ""); 
    setResult(2, intent); 
    if (isclose) { 

     finish(); 

    } else { 

      super.onBackPressed(); 
     } 
    } 

} 
Activity1: 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

     String sSuName = data.getStringExtra("MESSAGE"); 

     //txtfavouratecount.setText(sSuName); 

} 


in Your onclick listener 
    Intent itemintent = new Intent(context,your target Activity.class); 
      Bundle b = new Bundle(); 
      b.putStringArray("iarray", Qtag); 
      b.putInt("mflag", 0); 
      itemintent.putExtra("android.intent.extra.INTENT", b); 
      startActivityForResult(itemintent,2); 
0

我會做這樣的事情:

在活動A:

private static final int REQUEST_CODE = 9001; 

Intent intent = new Intent(this, ActivityB.class); 
startActivityForResult(intent, REQUEST_CODE); 

在活性B:

Intent data = new Intent(); 
data.putExtra("key", parameter); 
setResult(CommonStatusCodes.SUCCESS, data); 
finish(); 

最後,在活性的,得到的結果:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_CODE) { 
     if (resultCode == CommonStatusCodes.SUCCESS) { 
      if (data != null) { 
       String result = data.getStringExtra("key"); 
      } 
     } else { 
      //Error to receive data 
     } 
    } 
    else { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

祝你好運!

相關問題