2012-12-17 31 views
-1

可能重复:
How do I pass data between activities in Android?如何将RadioButton/RadioGroup的id传递给Android中的另一个屏幕?

qquestions

是,否,困难三种RadioButton S和NEXT是Button。我不知道如何将每个屏幕的选定单选按钮的ID传递给最后一个屏幕。在结果屏幕中,特定值将显示在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(); 
     } 
    }); 
} 
+0

因为所有的问题都有相同的布局,你应该使用一个片段,并不断填充不同的问题和活动可以跟踪正确的答案 – nandeesh

回答

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的结果,但你只需要结果,最好查看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中。

+0

我可以在RESULT屏幕中获得这个额外值? – DroidLearner

+1

如果您始终将其从活动传递给活动。如果你需要1比2的结果,那么使用这个,如果一个结果直到5不需要,你可以使用SharedPreferences而不必传递它们。 –

+0

请参阅编辑'SharedPreferences'的文章。 –

0

您可以使用意图,或者可以将值存储在首选项和访问首选项中,无论您需要什么。

0

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

+0

好方法:))我是一个小菜鸟。我认为它对我来说很复杂 – DroidLearner

+0

这种方法将使您能够轻松更改更新中的问题数量。你会节省时间。 – Vasudev

+0

也许我可以稍后再学习。 – DroidLearner

相关问题