Java 从意图返回后执行代码
我的主要活动中有一个文本视图 按下一个按钮,我打开另一个活动,进入可以重命名我的活动的选项 文本视图Java 从意图返回后执行代码,java,android,Java,Android,我的主要活动中有一个文本视图 按下一个按钮,我打开另一个活动,进入可以重命名我的活动的选项 文本视图 btnSet.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MainActivity.this, Options.class); startActivity(inte
btnSet.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Options.class);
startActivity(intent);
}
});
在我的选项活动中,我重命名我的文本视图,如下所示
public class Options extends MainActivity{
public static Boolean isRenamed;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.options);
String lblName = ("Counter 1");
Button btnOk = (Button) findViewById(R.id.btn_ok);
btnOk.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent backToMain = new Intent(Options.this, MainActivity.class);
EditText labelName = (EditText) findViewById(R.id.set_name);
String lblName = labelName.getText().toString();
backToMain.putExtra(LABEL_NAME, lblName);
isRenamed = true;
startActivity(backToMain);
finish();
}
});
}
}
我正在使用布尔值IsRename,单击“确定”后将其设置为true
在我的主要活动中,我设置了
if (Options.isRenamed == true) {
// Get the message from the intent
Intent backToMain = getIntent();
String lblName = backToMain.getStringExtra(Options.LABEL_NAME);
// Edit the text view
TextView label = (TextView) findViewById(R.id.label1);
label.setText(lblName);
}
现在是强制关闭,但是有没有更优雅的方法来查看我是否重命名了文件,然后执行那段代码来设置它
Context.startActivityForResult();
在那里做你所有的重命名和其他事情。返回一个简单的整数以了解发生了什么。这样,当您在第二个活动中调用finish()时,它将返回到第一个活动,而不创建新实例。使用
startActivityForResult()
而不是startActivity()
。在选项活动中:
public static final int RENAMED = 100;
btnOk.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent backToMain = new Intent(Options.this, MainActivity.class);
EditText labelName = (EditText) findViewById(R.id.set_name);
String lblName = labelName.getText().toString();
backToMain.putExtra(LABEL_NAME, lblName);
isRenamed = true;
setResult(RENAMED);
finish();
}
});
在MainActivity中,覆盖ActivityResult()和
当它被触发时,检查
resultCode
参数是否等于重命名。对于此senario,您需要使用
startActivityForResult(intent, requestCode)
而不是startActivity(intent)
在选项
活动中,您可以设置结果(结果代码、数据)
并调用finish
在MainActivity
中,您可以使用
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
}
你可以用
startActivityForResult(intent, intentsData.REQUEST_CODE);
然后在活动恢复时更改您的TextView
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
/**
* change your TextView
*/
super.onActivityResult(requestCode, resultCode, data);
}
看看startActivityForResult(…);