Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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_Eclipse_Android Intent_Android Activity - Fatal编程技术网

Java 如何使用意图将用户输入数据从一个活动发送到另一个活动

Java 如何使用意图将用户输入数据从一个活动发送到另一个活动,java,android,eclipse,android-intent,android-activity,Java,Android,Eclipse,Android Intent,Android Activity,下面的代码是第三个和第四个活动的源代码。第三个活动接收用户输入并对其执行数学运算。然后,原始值和处理后的值都发送到第四个活动,需要在其中显示。我不太熟悉意图的用法。有人能查一下我的密码吗?它不起作用了 第三项活动 public class Third extends Activity { double x=0, val1=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(

下面的代码是第三个第四个活动的源代码。第三个活动接收用户输入并对其执行数学运算。然后,原始值和处理后的值都发送到第四个活动,需要在其中显示。我不太熟悉意图的用法。有人能查一下我的密码吗?它不起作用了

第三项活动

public class Third extends Activity {

double x=0, val1=0;


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

    final EditText et;
    final Button b;

    et = (EditText) findViewById(R.id.editText1);
    b = (Button) findViewById(R.id.button1);

    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Third.this, Fourth.class);
            intent.putExtra("thetext", et.getText().toString());
            startActivity(intent);

            x=Double.parseDouble(et.getText().toString());

            val1=(x*.04);

            Intent in1 = new Intent(Third.this, Fourth.class);
            in1.putExtra("thevalue1",val1);
            startActivity(in1);

        }


  });

}
}
第四项活动:

public class Fourth extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fourth);

    TextView tv = (TextView) findViewById(R.id.textView1);
    tv.setText(getIntent().getExtras().getString("thetext"));


    TextView wt1=(TextView) findViewById(R.id.textView12);
    wt1.setText(getIntent().getExtras().getDouble("thevalue1"));
} 

}

您正在开始两种不同的活动。我认为您需要的是设置多个intent extras,然后启动活动:

@Override
public void onClick(View v) {
    Intent intent = new Intent(Third.this, Fourth.class);

    intent.putExtra("thetext", et.getText().toString());

    x=Double.parseDouble(et.getText().toString());
    val1=(x*.04);
    intent.putExtra("thevalue1",val1);

    startActivity(intent);
}
在您的示例中,一个活动仅以文本开始,另一个活动仅以双文本开始。然而,在这两项活动中,你都试图获得价值观的

还请注意,对于最终变量,您需要在如下声明时设置它们:

final EditText et = (EditText) findViewById(R.id.editText1);
final Button b = (Button) findViewById(R.id.button1);

在第四个活动中,请这样做

TextView tv = (TextView) findViewById(R.id.textView1);
    tv.setText(getIntent().getStringExtra("thetext"));


    TextView wt1=(TextView) findViewById(R.id.textView12);
    wt1.setText(getIntent().getDoubleExtra("thevalue1"));
getExtras()
方法用于bundle,您可以将其存储在intent中的第三个活动中

in1.putExtra("thevalue1",val1);

您需要将两个额外功能放在一个
Intent
中,并且只需调用
startActivity(…)
一次。更改第三个
活动的代码(在
onClick(…)
方法中),如下所示

Intent intent = new Intent(Third.this, Fourth.class);
intent.putExtra("thetext", et.getText().toString());
x=Double.parseDouble(et.getText().toString());
val1=(x*.04);
intent.putExtra("thevalue1",val1);
startActivity(intent);

你有什么问题?你有什么?错误在哪里?这解决不了任何问题。
Intent
的附加内容以
包的形式携带。调用
getStringExtra(…)
getDoubleExtra(…)
只是调用
getExtras().getString(…)
getExtras().getDouble(…)
的方便方法。当我尝试这样做时,我遇到了一个错误:类型意图中的getDoubleExtra(String,double)方法不适用于参数(String)试试这个
wt1.setText(String.valueOf(getIntent().getDoubleExtra(“thevalue1”))明白了!第四个活动怎么样?如何从bundle中提取这两个值?@user3211607:正如您在发布的代码中所示。它应该可以工作。它显示了错误:类型TextView中的方法setText(CharSequence)不适用于参数(double),这是因为您试图使用
double
设置
TextView
的文本。只需与您在第三个
活动中所做的操作相反,使用
String.valueOf(…)
将其转换回
字符串即可。先生,还有一个疑问。。我能否以如上所示的相同方式向同一个捆绑包发送多个添加的值?有限制吗?