将数据从一个活动发送到另一个活动的结果

时间:2014-02-04 11:43:00

标签: android

我在论坛上搜索但找不到合适的答案。 我已经在下面列出了相关部分

ACTIVITY ONE

implicitActivationButton.setOnClickListener(new OnClickListener() {

            // Call startImplicitActivation() when pressed
            @Override
            public void onClick(View v) {

Intent myIntent = new Intent(ActivityLoaderActivity.this,
                ExplicitlyLoadedActivity.class);
        startActivityForResult(myIntent, GET_TEXT_REQUEST_CODE);
            }
        });

稍微低一点

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

            Log.i(TAG, "Entered onActivityResult()");


            String input=data.getStringExtra(TAG);
            mUserTextView.setText(input);
        }

这是用户输入一些数据后的活动2

String input=mEditText.getText().toString();


    Intent i = new Intent(ExplicitlyLoadedActivity.this, ActivityLoaderActivity.class);
    i.putExtra("TAG",input);
    startActivity(i);       
    this.setResult(RESULT_OK);      
    finish();

除了屏幕上的文字没有更新外,根本没有任何错误消息。它应该

4 个答案:

答案 0 :(得分:6)

在第二堂课中不需要开始活动:

您需要更改代码:

Intent i = new Intent();  // or // Intent i = getIntent()
i.putExtra("TAG",input);
setResult(RESULT_OK , i);         
finish();

并取消,

setResult(RESULT_CANCELED, i);        
finish();

答案 1 :(得分:2)

试试这个

String input=data.getStringExtra("TAG"); 

取代

 String input=data.getStringExtra(TAG);

答案 2 :(得分:2)

在Activity2上,您将启动ExplicityLoadedActivity的新实例,而不是返回上一个实例。

您应该只设置结果,然后完成第二项活动。

以下是您可以尝试进行第二项活动的代码:

Intent returnIntent = new Intent();
returnIntent.putExtra("TAG",input);
setResult(RESULT_OK, returnIntent);        
finish();

答案 3 :(得分:0)

尝试这样设置ExplicitlyLoadedActivity

中的结果代码
String input=mEditText.getText().toString();
Intent i = new Intent();
i.putExtra("TAG",input);
this.setResult(RESULT_OK,i);      
finish();

并在ActivityLoaderActivity中访问该结果字符串,即

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

            Log.i(TAG, "Entered onActivityResult()");


            String input=data.getStringExtra("TAG");
            mUserTextView.setText(input);
        }