从以前的活动中获取视图

时间:2013-06-29 19:12:54

标签: android

我正在做一个测验应用程序,其中有Act1和Act2。 Act1显示每个问题的视图选择答案。

 public class ACT1 extends Activity 
{
 EditText question=null;
  RadioGroup choices = null;
 -------
 ------
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.question);

            /* //---get the Bundle object passed in---    
    Bundle bundle = getIntent().getExtras();

    //---get the data using the getInt() method---     
    int qId = bundle.getInt("questionIndex");

//不知道该怎么做

             question = (EditText) findViewById(R.id.question);
           RadioGroup questionLayout = (RadioGroup)findViewById(R.id.answers);

 ------

    this.getQuestionView(questionNo);
    FrameLayout quizLayout = (FrameLayout) findViewById(R.id.quizLayout);
    quizLayout.setVisibility(android.view.View.VISIBLE);
    }

并且在方法getQuestionView()中,用于获取问题和答案的其余代码接下来提交按钮的一切都在那里。

private void getQuestionView(questionNo)
   {
   ------
   ------
  //next and previous buttons OnClicklisteners
   ------
   private OnClickListener finishListener = new OnClickListener() 
{
    public void onClick(View v) 
    {
        Intent intent = new Intent(Act1.this,Act2.class);
           }
    }

Act2显示了一个结果视图,其中包含一个问题链接表。在单击问题链接时,将显示来自Act1的相应问题视图,并且在单击后退按钮时,它将返回到Act2。我是android新手所以请任何人帮忙。         公共类Act2扩展活动{     --------      -------     TableLayout questionsTable;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.result);


    int totalQues = Act1.getQuestions().length;
    questionsTable =(TableLayout)findViewById(R.id.questions);
    -------
            -------     
    for(int i=0;i<totalQues;i++)
    {
        ------
                  --------

        TableRow tr = new TableRow(this);

        TextView queText = new TextView(this);
               tr.addView(queText,LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT);
        tr.setClickable(true);
        tr.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent  intent = new Intent(this,Act1.class);
                 //---use a Bundle object to add new key/values pairs---         
                Bundle extras = new Bundle(); 
                            //here i wanna check whether 2nd question is displaying     
                extras.putInt("questionIndex",2 );                
                //---attach the Bundle object to the Intent object---       
                intent.putExtras(extras); 
                startActivity(intent);
            }
        });

提前感谢。

1 个答案:

答案 0 :(得分:1)

如果我没弄错的话,你需要将一些数据从一个活动传递到另一个活动。这是通过Intent类完成的,它可以包含“extras”,它实际上只是键值对,可以由调用活动写入,然后由被调用活动读取。

例如,我可以编写如下代码:

public static final String EXTRA_QUESTION = "question";

// When you need to create the intent:
Intent intent = new Intent(this, Act2.class);
// questionId is whatever identifies the question in your code
intent.putExtra(EXTRA_QUESTION, questionId);

在你写的其他活动中:

Intent intent = getIntent();
// In this example questionId is int, but it could be something else
int questionId = intent.getIntExtra(Act1.EXTRA_QUESTION, 0);