0

メインアクティビティに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を使用しており、[OK]をクリックした後に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

4 に答える 4

1
Context.startActivityForResult();

名前の変更やその他の作業はすべてそこで行います。何が起こったかを知るために単純な整数を返します。そうすれば、2番目のアクティビティでfinish()を呼び出すと、新しいインスタンスを作成せずに最初のアクティビティに戻ります。

于 2012-07-11T14:59:36.500 に答える
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でオーバーライドし、起動時にparamterがRENAMEDと等しいonActivityResult()かどうかを確認します。resultCode

于 2012-07-11T15:01:26.577 に答える
0

このシナリオでは、使用する必要があります

startActivityForResult(intent, requestCode)

それ以外のstartActivity(intent)

あなたのOptionsアクティビティでは、あなたはcasetResult(resultCode, data)と呼び出し終了します。

MainActivityデータを使用できます

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
}
于 2012-07-11T15:02:00.553 に答える
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);
    }
于 2012-07-11T15:02:44.650 に答える