Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在完成之前将数据从一个活动发送到另一个活动_Java_Android_Android Intent_Android Activity - Fatal编程技术网

Java 在完成之前将数据从一个活动发送到另一个活动

Java 在完成之前将数据从一个活动发送到另一个活动,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,我想将一些数据从一个活动传输到上一个活动。我通过首先测试数据的发送简化了它,因此我制作了一个项目,它有两个活动,main活动和SecondActivity,SecondActivity有一个文本字段和一个按钮,main活动有一个文本视图。我仔细研究了我的问题,发现了很多可以使用startActivityForResult的方法,并找到了一些帮助我编写代码的示例。然而,它似乎不起作用。我试图打印出字符串值。代码和输出发布在下面 主要活动: package com.example.activityt

我想将一些数据从一个活动传输到上一个活动。我通过首先测试数据的发送简化了它,因此我制作了一个项目,它有两个活动,
main活动
SecondActivity
SecondActivity
有一个文本字段和一个按钮,
main活动
有一个文本视图。我仔细研究了我的问题,发现了很多可以使用
startActivityForResult
的方法,并找到了一些帮助我编写代码的示例。然而,它似乎不起作用。我试图打印出字符串值。代码和输出发布在下面

主要活动:

package com.example.activitytesting;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
    private static final int REQUEST_CODE_TEST = 0;

    private TextView txtView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtView = (TextView) findViewById(R.id.txtView);

        Intent i = new Intent(MainActivity.this, SecondActivity.class);
        startActivityForResult(i, REQUEST_CODE_TEST);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

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

        if(requestCode == REQUEST_CODE_TEST) {
            if(resultCode == Activity.RESULT_OK) {
                String txt = data.getStringExtra("txt");
                System.out.println("from main activity: \"" + txt + "\"");
                txtView.setText(txt);
            }
        }
    }
}
第二项活动:

package com.example.activitytesting;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class SecondActivity extends Activity {
    private String txtStr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        EditText txt = (EditText) findViewById(R.id.txtField);
        txtStr = txt.getText().toString().isEmpty() ? "empty text field" : txt.getText().toString();

        Button finishBtn = (Button) findViewById(R.id.finishBtn);
        finishBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent result = new Intent();
                System.out.println("from second activity: \"" + txtStr + "\"");
                result.putExtra("text", txtStr);
                setResult(Activity.RESULT_OK, result);
                finish();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.second, menu);
        return true;
    }

}
现在我得到了LogCat的输出,它们是:

12-05 01:28:34.850: I/System.out(359): from second activity: "empty text field"
12-05 01:28:34.900: I/System.out(359): from main activity: "null"

为什么我无法从一个活动到另一个活动获取数据?

您的资源包密钥不匹配

第二个活动是使用

result.putExtra("text", txtStr);
但是MainActivity使用

String txt = data.getStringExtra("txt");

两个活动应使用相同的键-在这两种情况下使用“text”或“txt”

您的资源包键不匹配

第二个活动是使用

result.putExtra("text", txtStr);
但是MainActivity使用

String txt = data.getStringExtra("txt");

两个活动应使用相同的键-在这两种情况下使用“text”或“txt”

您的资源包键不匹配

第二个活动是使用

result.putExtra("text", txtStr);
但是MainActivity使用

String txt = data.getStringExtra("txt");

两个活动应使用相同的键-在这两种情况下使用“text”或“txt”

您的资源包键不匹配

第二个活动是使用

result.putExtra("text", txtStr);
但是MainActivity使用

String txt = data.getStringExtra("txt");

这两个活动都应该使用相同的键-在这两种情况下都使用“text”或“txt”

It获取文本字段onCreate方法将此行添加到onClick方法
txtStr=txt.getText().toString().isEmpty()?“空文本字段”:txt.getText().toString()@Paperwaste Yeh,这就是我在阅读代码后所做的。感谢您在textField onCreate方法中获取文本,将此行添加到onClick方法
txtStr=txt.getText().toString().isEmpty()?“空文本字段”:txt.getText().toString()@Paperwaste Yeh,这就是我在阅读代码后所做的。感谢您在textField onCreate方法中获取文本,将此行添加到onClick方法
txtStr=txt.getText().toString().isEmpty()?“空文本字段”:txt.getText().toString()@Paperwaste Yeh,这就是我在阅读代码后所做的。感谢您在textField onCreate方法中获取文本,将此行添加到onClick方法
txtStr=txt.getText().toString().isEmpty()?“空文本字段”:txt.getText().toString()@Paperwaste Yeh,这就是我在阅读代码后所做的。谢谢