Android将意图传递给之前的Activity

时间:2015-10-06 12:29:02

标签: android

我想将一些数据发送到之前的Activity。但它不起作用。

这里我需要发送一些数据。

 btnSaveRecord = (Button)findViewById(R.id.buttonSaveRecord);
        btnSaveRecord.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {

                Intent intent = new Intent(Record_Audio.this , AddPost.class);
                intent.putExtra("STRING_I_NEED", newAudioFile);

                startActivity(intent);
                finish();

            }
        });

这是我以前的活动

 if (savedInstanceState == null)
        {
            Bundle extras = getIntent().getExtras();
            if(extras == null)
            {
                newString= null;
                Log.e("111"," = "+newString);
            }
            else
            {
                newString= extras.getString("STRING_I_NEED");
                Log.e("222"," = "+newString);
            }
        } else
        {
            newString= (String) savedInstanceState.getSerializable("STRING_I_NEED");
            Log.e("333"," = "+newString);
        }

我需要什么代码,我不明白为什么不工作。

2 个答案:

答案 0 :(得分:2)

尝试getting the result from an activity

总结文章:

static final int REQUEST_CODE = 1;  // The request code
...
private void itemClicked() {
    Intent intent = new Intent(this, SecondActivity.class);
    // Add any data that you wish to send
    intent.putExtra("DATA", "value");
    startActivityForResult(pickContactIntent, REQUEST_CODE);
}

在第二项活动中,接收您要修改的数据:

String valueToChange = getIntent()。getExtras()。getString(“DATA”);

然后将其放入“编辑”文本或任何您想要使用的内容中,完成后将其设置为结果包。

// Create the result Intent
Intent intent = new Intent();
intent.putExtra("RESULT", "YourNewString");
setResult(Activity.RESULT_OK, intent);
finish();

在您的第一个活动中,覆盖onActivityResult以获取值。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request it is that we're responding to
    if (requestCode == REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
             String newString = data.getExtras().getString("RESULT");
         }
    }
}

您可能还希望通过数组中的项目位置发送,以便您可以更新它。

答案 1 :(得分:0)

使用它将数据发送到上一个活动

Intent intent = new Intent();
intent.putExtra("done", true);
setResult(RESULT_OK, intent);
FiltersActivity.this.finish();

然后在之前的活动中收到这样的

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

        Log.e("Codes for result ", "requestCode = " + requestCode + " resultCode = " + resultCode);

        switch (requestCode) {

            case SHARE_PHOTO:
                if (resultCode == RESULT_OK) {
                    Boolean isDoneSharing = data.getBooleanExtra("done", false);

                }

        }
    }