簡體   English   中英

Android-問題使用意圖在兩個活動之間傳遞和保存數據

[英]Android - Issue Passing and saving the data between two activities using intents

我的第一個活動中有一個TextView和一個Button ,第二個活動中有一個EditText和一個Button

在第二個活動中,我想將一個EditText值傳遞給第一個活動,並在第一個活動中顯示TextView ,我也想在從第一個活動返回后保存給定的edittext值

public class ActivityA extends Activity {
        TextView textView;
        Button button;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_activity);
            button = (Button) findViewById(R.id.button);
            textView = (TextView) findViewById(R.id.tv1);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    gotoActivityB();
                }
            });

        }

      /*  private void gotoActivityB(){
            Intent intent = new Intent(this, ActivityB.class);
            startActivityForResult(intent, 0);  //0 is a request code
        }*/
      private void gotoActivityB()
      {
          Intent intent = new Intent(this,ActivityB.class);
          intent.putExtra("value",textView.getText());
          startActivityForResult(new Intent(this,ActivityB.class),101);
      }



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

            if (requestCode == 0) {
                if (resultCode == RESULT_OK) {

                    // get String data from Intent
                    String returnString = data.getStringExtra("keyName");

                    // set text view with string
                    textView.setText(returnString);
                }
            }
        }
    }

第二活動

public class ActivityB extends Activity {
    EditText edittext;
    Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        edittext=(EditText)findViewById(R.id.edt);

        Intent intent = getIntent();
        String str = intent.getStringExtra("value"); // that means you have passed value from activity B to activity A, otherwise activity B is fresh launched.
        if(str!=null)
        {
            edittext.setText(str);
        }
        button=(Button)findViewById(R.id.btn1);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // get the text from the EditText
                EditText editText = (EditText) findViewById(R.id.edt);
                String stringToPassBack = editText.getText().toString();

                // put the String to pass back into an Intent and close this activity
                Intent intent = new Intent();
                intent.putExtra("keyName", stringToPassBack);
                setResult(RESULT_OK, intent);

                finish();
            }
        });
    }
}

在第二個活動按鈕上單擊

使用這樣的代碼:

 button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent=new Intent();
                intent.putExtra("KEY",value);
                setResult(Activity.RESULT_OK,intent);
                finish();
            }
        });

ActivityA ,將gotoActivityB()方法更改為

private void gotoActivityB(){
    Intent intent = new Intent(this, ActivityB.class);
    startActivityForResult(intent, 0);  //0 is a request code
}

然后在ActivityA覆蓋onActivityResult方法

// This method is called when the second activity finishes
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {

         // get String data from Intent
         String returnString = data.getStringExtra("keyName");

         // set text view with string
         textView.setText(returnString);
        }
    }
}

在您的ActivityB ,單擊按鈕時編寫以下代碼

button.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {

         // get the text from the EditText
         EditText editText = (EditText) findViewById(R.id.editText);
         String stringToPassBack = editText.getText().toString();

         // put the String to pass back into an Intent and close this activity
         Intent intent = new Intent();
         intent.putExtra("keyName", stringToPassBack);
         setResult(RESULT_OK, intent);
         finish();
    }
});

還可以從ActivityB刪除onDestroy()方法,這是不需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM