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(…)
将其转换回字符串即可。先生,还有一个疑问。。我能否以如上所示的相同方式向同一个捆绑包发送多个添加的值?有限制吗?