繁体   English   中英

如何在Android上的活动之间发送意图变量?

[英]How to send intent variable between activities on android?

我正在写一个android apllication,我有两个活动。 我应该将requestCode,resultCode和Intent数据发送到其他活动中。 我已经成功发送了前两个,但是如何将“意图数据”变量发送到其他活动中呢?

 @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) {

从FirstActivity调用Second Activity:

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;  
}  
}  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM