簡體   English   中英

從一個活動向另一個活動發送數據

[英]sending data from one activity to another

我正在嘗試從子活動向主要活動發送一些字符串數據,並在編輯文本字段中顯示該數據。 這是我在子活動中的代碼:

button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent in = new Intent();
        in.setClass(getApplicationContext(),
        DelaySmsActivity.class);
        in.putExtra("values", stringDataForSend);
        setResult(RESULT_OK, in);                   
        finish();
    }
});

這是主要活動中我試圖獲得該價值的代碼:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data);
    parametar = data.getStringExtra("values");
    editTextField.setText(parametar);
}

運行此命令后,我的editTextField為空。

為了傳遞諸如字符串之類的簡單數據,我改用Bundles。

在您的onClick中:

Intent yourIntent = new Intent(currentActivity.this, NextActivity.class);
Bundle yourBundle = new Bundle();
yourBundle.putString("name", string);
yourIntent.putExtra(yourBundle);
startActivity(yourIntent);

然后,在下一個活動的onCreate中,檢索您的字符串,如下所示:

Bundle bundle = getIntent().getExtras();
String passedValue = bundle.getString("name");

嘗試這樣說,您當前的活動是X,下一個活動是Y:-

   Intent main= new Intent(X.this, Y.class);
   main.putExtra("key", "somevalue");
   X.this.startActivity(main);

在Y活動上onCreate

   Intent intent = getIntent();
   String value= intent.getStringExtra("key");

由於您不提交代碼,因此這里的示例可以為您提供幫助

調用活動時,請使用startActivityForResult() not startActivity()

public class CheckStartActivityForResult extends Activity {
     int requestCode;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.d("CheckStartActivity","OnCreate");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent i = new Intent(this,CalledActivity.class);       
        startActivityForResult(i, requestCode);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d("CheckStartActivity","onActivityResult and resultCode = "+resultCode);
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==1){
            Toast.makeText(this, "Pass", Toast.LENGTH_LONG).show();
        }
        else{
            Toast.makeText(this, "Fail", Toast.LENGTH_LONG).show();
        }
    }
}

和所謂的活動

public class CalledActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("CalledActivity","OnCreate ");
        //String value = "rahul";
        Intent in = new Intent();
        setResult(1,in);//Here I am Setting the Requestcode 1, you can put according to your requirement
        finish();
    }

}

暫無
暫無

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

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