-1

可能重复:
如何在 Android 中的活动之间传递数据?

问答

Yes,No,Difficult 是三个RadioButtons 而 NEXT 是一个Button。我不知道如何将每个屏幕的选定单选按钮的 ID 传递到最后一个屏幕。在 RESULT 屏幕中,特定值将显示在 中TextView。这是一个屏幕的代码:

public class MainActivity extends Activity {
RadioGroup rg;
RadioButton rb;
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    addListenerOnButton();
}
private void addListenerOnButton() {
    rg = (RadioGroup) findViewById(R.id.rg_Ques1);
    b = (Button) findViewById(R.id.button1_ques1);
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            int  selectedId = rg.getCheckedRadioButtonId();
            rb = (RadioButton) findViewById(selectedId);
            Intent i = new Intent(MainActivity.this,Ques2.class);
            startActivity(i);
            Toast.makeText(getApplicationContext(), rb.getText(), 0).show();
        }
    });
}
4

3 回答 3

0

我的方法在这里会有所不同。我将只针对所有问题进行一项活动。我会将我的问题保存在一个列表中,并在按下“下一步”按钮时加载新问题。显示最后一个问题时,将按钮文本更改为“完成”,并在按“完成”时加载新活动,并在捆绑中包含正确答案的编号。

于 2012-12-17T18:00:20.233 回答
0

您可以使用意图,也可以将值存储在首选项中,并在需要时访问首选项。

于 2012-12-17T17:56:24.597 回答
0

在您的初始课程中,您可以向意图添加额外内容:

int  selectedId = rg.getCheckedRadioButtonId();
rb = (RadioButton) findViewById(selectedId);
Intent i = new Intent(MainActivity.this,Ques2.class);
i.putExtra("rb_value", rb.isChecked());
startActvity(i);

在您的第二堂课中,您可以获得您传递的额外值:

this.getIntent().getExtras().getBoolean("rb_value");

如果您需要问题二的问题一的结果,这将是最好的方法。如果您不需要问题 1 的结果作为问题 2,但您只需要它们用于结果,则最好查看SharedPreference(根据记忆,某些表达式可能不正确但接近):

在您的问题活动中:

SharedPreferences sharedPreferences = this.getSharedPreferences("my.app.preferences", 0);
SharedPreferences.Editor sharedPreferences_edit = sharedPreferences.edit();

sharedPreferences_edit.putBoolean("question1", true);
sharedPreferences_edit.commit();

在您的结果活动中:

SharedPreferences sharedPreferences = this.getSharedPreferences("my.app.preferences", 0);
sharedPreferences.getBoolean("question1");

对于加载这样的问题,加载新的意图不是最好的解决方案,因为你最终会分层你的应用程序......如果我正在创建这样的东西,我会让它能够更改问题而无需加载全新的活动,按下按钮后,它只会更改屏幕上的问题,同时将响应存储到变量/sharedPreferences。

于 2012-12-17T17:53:35.417 回答