我的主要活动中有一个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();


        }
    });
}


}

我正在使用boolean 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);

    }


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

最佳答案

使用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。

关于java - 从Intent返回后执行代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11435461/

10-11 15:27