2015-10-05 30 views
0

我正在寫一個android apllication,我有兩個活動。我應該將requestCode,resultCode和Intent數據發送到其他活動中。我設法發送了前兩個成功,但我怎麼能發送「意圖數據」變量到其他活動?如何在Android上的活動之間發送意圖變量?

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    try { 
     // When an Image is picked 
     if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK 
       && null != data) { 
+5

的[?我如何通過活動之間數據的Android(可能的複製HTTP ://stackoverflow.com/questions/2091465/how-do-i-pass-data-between-activities-in-android) – Shahzeb

+2

intent.putExtras(dat一個); –

+0

從數據意圖中提取特定信息並傳遞給另一個活動 –

回答

1

調用次活動從FirstActivity:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
intent.putExtra("intent_data_tag","data"); 
startActivityforResult(intent,200); 

獲得第二個活動意圖數據:

String intentData = getIntent().getStringExtra("intent_data_tag","defValue"); 

發送結果FirstActivity:

Intent resultIntent = new Intent(); 
// TODO Add extras or a data URI to this intent as appropriate. 
resultIntent.putExtra("result_data_tag","result_data"); 
setResult(Activity.RESULT_OK, resultIntent); 
finish(); 

獲取引起FirstActivity :

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (requestCode == 200 && resultCode == RESULT_OK && data != null) { 
    String resultData = data.getStringExtra("result_intent","defValue") 
} 
} 

例子:MainActivity.java

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
public class MainActivity extends Activity { 
TextView textView1; 
Button button1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    textView1=(TextView)findViewById(R.id.textView1); 
    button1=(Button)findViewById(R.id.button1); 
    button1.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      Intent intent=new Intent(MainActivity.this,SecondActivity.class); 
      startActivityForResult(intent, 2);// Activity is started with requestCode 2 
     } 
    }); 
} 
// Call Back method to get the Message form other Activity 
@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
      super.onActivityResult(requestCode, resultCode, data); 
       // check if the request code is same as what is passed here it is 2 
       if(requestCode==2) 
        { 
         String message=data.getStringExtra("MESSAGE"); 
         textView1.setText(message); 
        } 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

}

SecondActivity.java

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
public class SecondActivity extends Activity { 
EditText editText1; 
Button button1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    editText1=(EditText)findViewById(R.id.editText1); 
     button1=(Button)findViewById(R.id.button1); 
     button1.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       String message=editText1.getText().toString(); 
       Intent intent=new Intent(); 
       intent.putExtra("MESSAGE",message); 
       setResult(2,intent); 
       finish();//finishing activity 
      } 
     }); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.second, menu); 
    return true; 
} 
} 
+0

請給我一個確切的描述如何做到這一點?不幸的是,我無法做到這一點:S –

+0

嘗試上面的代碼。對於任何進一步的查詢隨時問。 –

相關問題