从Intent返回后执行代码

时间:2012-07-11 14:56:43

标签: java android

我的主要活动中有一个TextView。

按下按钮我打开另一个活动并进入我可以重命名我的选项 TextView的

 btnSet.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            Intent intent = new Intent(MainActivity.this, Options.class);
            startActivity(intent);



        }
    });

在我的选项活动中,我将我的TextView重命名为

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();


        }
    });
}

}

我正在使用布尔值isRenamed,然后在单击确定

后将其设置为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);

    }

现在它正在关闭,但是有没有更优雅的方式来查看我是否已重命名该文件然后执行该代码来设置它?

4 个答案:

答案 0 :(得分:1)

Context.startActivityForResult();

在那里完成所有重命名和其他内容。返回一个简单的整数来知道发生了什么。这样,当您在第二个活动中调用finish()时,它将返回到您的第一个而不创建新实例。

答案 1 :(得分:0)

使用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();


        }
    });

在MainActiviy中,覆盖onActivityResult()和 当它被触发时,检查resultCode参数是否等于RENAMED。

答案 2 :(得分:0)

对于这种情况,您需要使用

startActivityForResult(intent, requestCode)

而不是startActivity(intent)

在您Options的{​​{1}}活动中,并致电完成。

并且在setResult(resultCode, data)中您可以使用

中的数据
MainActivity

答案 3 :(得分:0)

你可以使用

startActivityForResult(intent, intentsData.REQUEST_CODE);

然后在恢复活动时更改TextView

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

          /**
           * change your TextView
           */
          super.onActivityResult(requestCode, resultCode, data);
    }
相关问题