这是我的代码片段。 Textview
充当按钮,并在其上显示Onclicklistner
。点击cpu1000 Textview
后会转到cpu_g1000
类,代码如下所示。
public class Game_1000 extends AppCompatActivity implements View.OnClickListener{
private TextView cpu1000, mobo1000;
TextView cpu, mobo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_1000);
cpu1000 = (TextView) findViewById(R.id.proName_G1);
mobo1000 = (TextView) findViewById(R.id.moboName_G1);
cpu1000.setOnClickListener(this);
mobo1000.setOnClickListener(this);
cpu = (TextView) findViewById(R.id.proNameG1000);
cpu.setText(getIntent().getStringExtra("Processor"));
mobo = (TextView) findViewById(R.id.moboNameG1000);
mobo.setText(getIntent().getStringExtra("Motherboard"));
}
@Override
public void onClick(View v) {
if (v == cpu1000) {
opencpu_g1000();
}
else if (v == mobo1000) {
openmobo_g1000();
}
}
public void opencpu_g1000() {
Intent intent = new Intent(this, cpu_g1000.class);
startActivity(intent);
}
public void openmobo_g1000() {
Intent intent = new Intent(this, mobo_g1000.class);
startActivity(intent);
}
在本课程中,有单选按钮。用户选择其中一个选项,选择更改为字符串。字符串将发送回Game_1000
课程。然后,字符串将替换为“选择处理器”以显示新选项。我遇到的问题是,当我选择主板时,处理器选择将恢复为“选择处理器”,主板选择显示。我需要同时展示。
public class cpu_g1000 extends AppCompatActivity {
Button button_save;
RadioGroup rG;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cpu_g1000);
button_save = (Button) findViewById(R.id.Save_G1_cpu);
rG = (RadioGroup) findViewById(R.id.cpu_RadioGrp);
tv = (TextView) findViewById(R.id.proNameG1000);
button_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int selected_cpu = rG.getCheckedRadioButtonId();
RadioButton selectedRadioButton = (RadioButton) findViewById(selected_cpu);
String radioValue = selectedRadioButton.getText().toString();
Intent intent = new Intent(cpu_g1000.this, Game_1000.class);
intent.putExtra("Processor", radioValue);
startActivity(intent);
}
});
}
选择处理器:
选择主板:
选择示例:
之前的选择没有被记录,当做出新选择时,之前的选择将恢复为“请选择处理器”,但我需要显示这两个信息。在我的原始代码中,我有两个以上的选择,但我缩短了它以便于阅读。
答案 0 :(得分:1)
通过调用startActivityForResult(...)
开始您的第二个(选择)活动,然后当用户完成交互时,在Intent
中设置您选择的数据,并将该意图传递给具有所需结果的方法{{1}然后在第二个活动上调用完成。
完成第二项活动后,您将在第一项活动的setResult(...)
方法中收到意向数据,从意图中提取该数据,然后将其显示给用户。
答案 1 :(得分:0)
尝试使用Shared Preference。这是一个很好的tutorial。
答案 2 :(得分:0)
对于您的场景,您需要做的是保存处理器和主板选择结果,或将数据从一个活动发送到另一个活动。在处理器选择之后,您将返回Game_1000
活动,您可以使用startActivityForResult。此方法将结果发送回通过Intent调用Activity。这意味着如果您从cpu_g1000
活动中调用Game_1000
活动,选择处理器后,您可以将结果发回Game_1000
活动。 Game_1000
活动将以onActivityResult
方法获得结果。
示例:
从cpu_g1000
活动中Game_1000
开始public void opencpu_g1000() {
Intent intent = new Intent(this, cpu_g1000.class);
startActivityForResult(intent, PROCESSOR_SELECTION_CODE);
}
活动。
cpu_g1000
在Game_1000
活动中,将结果设置为意图并发送回 button_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int selected_cpu = rG.getCheckedRadioButtonId();
RadioButton selectedRadioButton = (RadioButton) findViewById(selected_cpu);
String radioValue = selectedRadioButton.getText().toString();
Intent resultIntent = new Intent();
// TODO Add data to send back
resultIntent.putExtra("ProcessorSelection", radioValue);
setResult(Activity.RESULT_OK, resultIntent);
// finishing this activity
finish();
}
});
活动
Game_1000
在cpu_g1000
活动中,通过覆盖startActivityForResult方法获取从@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (PROCESSOR_SELECTION_CODE) : {
if (resultCode == Activity.RESULT_OK) {
// TODO Extract the data returned from the child Activity.
String radioValue = data.getStringExtra("ProcessorSelection");
// save the result value and update UI
}
break;
}
}
}
活动发送的值。
mobo_g1000
对于Game_1000
活动,使用相同的过程将结果返回到mobo_g1000
活动中。使用onActivityResult
开始Game_1000
活动,并获取case
活动startActivityForResult方法中的值。您必须在onActivityResult
方法中为mobo_g1000
活动添加另一个{{1}}。
检查onActivityResult
和this链接,以便更好地了解这项工作的方式。