Android 安卓意向赢得';t从开关传递值
我有一个开关按钮,我想从中传递不同的值(1或2)到下一个活动进行计算。但我总是得到0。有什么帮助吗Android 安卓意向赢得';t从开关传递值,android,android-intent,switch-statement,Android,Android Intent,Switch Statement,我有一个开关按钮,我想从中传递不同的值(1或2)到下一个活动进行计算。但我总是得到0。有什么帮助吗 Switch mySwitch = (Switch) findViewById(R.id.edit_home); // set the switch to ON mySwitch.setChecked(true); // attach a listener to check for changes in state mySwitch.setOnCheck
Switch mySwitch = (Switch) findViewById(R.id.edit_home);
// set the switch to ON
mySwitch.setChecked(true);
// attach a listener to check for changes in state
mySwitch.setOnCheckedChangeListener(new Switch.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
double input5 = 2;
Intent intentx=new Intent(MainActivity.this,Main2Activity.class);
intentx.putExtra("IFValue",input5);
startActivity(intentx);
Toast.makeText(getApplicationContext(), "Home field is important advantage",
Toast.LENGTH_SHORT).show();
} else {
double input5 = 1;
Intent intenty=new Intent(MainActivity.this,Main2Activity.class);
intenty.putExtra("IFValue",input5);
startActivity(intentx);
Toast.makeText(getApplicationContext(),
"Home field is not advantage", Toast.LENGTH_SHORT).show();
}
}
});
在下一个活动中:
Bundle bundle = getIntent().getExtras();
double input5 = bundle.getDouble("IFValue");
编辑:我想将值(input5)发送到下一个活动,但如果我在开关内部添加startActivity(intentx);然后立即到达那里,而不是当我按下一步按钮(按钮向前)时
代码的其余部分:
Switch mySwitch = (Switch) findViewById(R.id.edit_home);
// set the switch to ON
mySwitch.setChecked(true);
// attach a listener to check for changes in state
mySwitch.setOnCheckedChangeListener(new Switch.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked == true) {
double input5 = 2;
Intent intentx=new Intent(MainActivity.this,Main2Activity.class);
intentx.putExtra("IFValue",input5);
startActivity(intentx);
Toast.makeText(getApplicationContext(), "Home field is important advantage",
Toast.LENGTH_SHORT).show();
} else {
double input5 = 1;
Intent intenty=new Intent(MainActivity.this,Main2Activity.class);
intenty.putExtra("IFValue",input5);
startActivity(intenty);
Toast.makeText(getApplicationContext(),
"Home field is not advantage", Toast.LENGTH_SHORT).show();
}
}
});
Button buttonForward = (Button) findViewById(R.id.buttonToMain2);
buttonForward.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
EditText edit_team = (EditText) findViewById(R.id.edit_team);
EditText edit_form = (EditText) findViewById(R.id.edit_form);
EditText edit_import = (EditText) findViewById(R.id.edit_import);
String ekipa1 = edit_team.getText().toString();
final double input2 = Double.valueOf(qualityControl.getProgress());
final double input3 = Double.valueOf(edit_form.getText().toString());
final double input4 = Double.valueOf(ratingBar.getRating());
final double input6 = Double.valueOf(edit_import.getText().toString());
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("Value",input2);
intent.putExtra("Value1",input3);
intent.putExtra("Value2",input4);
intent.putExtra("Value4",input6);
intent.putExtra("team1", ekipa1);
startActivity(intent);
}
});
您正在侦听器内创建
Intent
(intentx&intenty)的本地实例(我看不到您在侦听器内调用startActivity()
)。传递的extra
仅适用于本地副本,而不适用于您在侦听器外部使用的startActivity()
更新1
使用额外
键时,字符大小写很重要:
您正在使用intentx.putExtra(“IFvalue”,input5)代码>
在下一个活动中,您使用的是double input5=bundle.getDouble(“IFValue”)代码>这是一个不同的键
更新2
我想将值(input5)发送到下一个活动,但如果我添加
开关内部的启动触觉(intentx);然后马上去那里
当我按“下一步”按钮(按钮向前)时,就不会这样了
然后,您只需要在整个活动中有一个Intent
实例(在onCreate()
之前定义它,然后不要从交换机侦听器启动活动,而是为单个Intent
实例添加额外的:
Intent intent = new Intent(MainActivity.this,Main2Activity.class); // Class level variable
然后在交换机侦听器中更改以下内容:
// Intent intentx=new Intent(MainActivity.this,Main2Activity.class); remove this
intent.putExtra("IFValue",input5);
//Intent intent=new Intent(MainActivity.this,Main2Activity.class); remove this
intent.putExtra("Value",input2);
intent.putExtra("Value1",input3);
intent.putExtra("Value2",input4);
intent.putExtra("Value4",input6);
intent.putExtra("team1", ekipa1);
startActivity(intent);
然后在按钮中向前单击侦听器:
// Intent intentx=new Intent(MainActivity.this,Main2Activity.class); remove this
intent.putExtra("IFValue",input5);
//Intent intent=new Intent(MainActivity.this,Main2Activity.class); remove this
intent.putExtra("Value",input2);
intent.putExtra("Value1",input3);
intent.putExtra("Value2",input4);
intent.putExtra("Value4",input6);
intent.putExtra("team1", ekipa1);
startActivity(intent);
检查您的isChecked值我认为它永远不会改变,请先从breakeposints开始检查,这是开始策略(意图);功能?你是如何开始下一个活动的?@BhanuSharma我如何修复它?那么这是你的问题吗?你的光标总是处于错误的状态,我认为@Mohamed_AbdAllah这是对的。看起来你在开关范围外调用startActivity。是的,我在开关范围外调用startActivity,所以我添加了:startActivity(intentx);在putExtra下吼叫,但它仍然提供0,而不是2?IFvalue不是IFvalue(常见错误):)纠正了所有错误,仍然不工作。正如巴努·夏尔马所评论的,这一定是isChecked值的问题。我该如何解决这个问题?如果问题在isChecked中,则在其他活动中会得到1