我有这两个Activity,每个都在单独的文件中:
public class MainActivity extends AppCompatActivity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}
public class DisplayMessageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
layout.addView(textView);
}
}
在MainActivity中我们创建Intent
对象并保留一些数据,
在DisplayMessageActivity
我们使用getIntent()
方法得到此意图,
并且此方法返回给我们Intent
对象
我的问题是这个方法如何向我们返回我们在MainActivity
??
答案 0 :(得分:0)
您必须在MainActivity中实施onActivityResult
并使用startActivityForResult
启动DisplayMessageActivity:
... sendMessage(View view) {
...
startActivityForResult(intent, MESSAGE_RESULT_CODE);
}
public void onActivityResult(int requestcode, int resultcode, Intent data) {
//You can get your result intent data here
if (requestcode == MESSAGE_RESULT_CODE && resultcode == RESULT_OK) {
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
}
}
只需在onPause
,onStop
或onBackPressed
和onSupportNavigateUp
中添加DisplayMessageActivity:
//in your case maybe 'your_intent_sent_back_to_mainactivity = getIntent();'
setResult(RESULT_OK, your_intent_sent_back_to_mainactivity);
的进行追加强>
Android开发者社区中的来源:
https://developer.android.com/training/basics/intents/result.html
答案 1 :(得分:0)
根据官方文档,get intent用于
返回开始此活动的意图。
这意味着它是一个返回最初启动该活动的意图的函数。 这回答了你的疑问。
Android Developers Documentation - Activity - getIntent()
阅读官方文档始终是一个好习惯。
添加额外内容的一般语法是:
Intent intent = new Intent(context, activity.class); //Create intent to start activity
intent.putExtra("key", data); //adding data
startActivity(intent);
要从您开始的活动中接收该数据:
Intent intent = getIntent();
String data = intent.getExtra("key");
String变量 - 数据将保存您在上一个活动中附加的值。这意味着,您只能使用此方法直到下一个活动。