1

在代码中,我将新值传递给同一个活动(OneActivity),但是当我单击按钮时,它似乎打开了一个新活动(刷新屏幕)。如何修改下面的代码以维护 Activity 而不是在单击按钮时刷新它?

final Button fruit_q = (Button) findViewById(R.id.fruit_q);
fruit_q.setOnClickListener(new OnClickListener() //Next step
        {
            public void onClick(View v)
            {
                Intent i = new Intent(getApplicationContext(), OneActivity.class);

                if(position != 35) //35 is end of index in gridview array
                {
                    // passing array index
                    String name = getResources().getResourceEntryName(imageAdapter.mThumbIds[position+1]);
                    i.putExtra("image_name", name);
                    i.putExtra("id", position+1);
                    i.putExtra("rememberID_frist", firstTimeID_1);
                    i.putExtra("rememberID_second", position+1);
                    whatfruit.stop();
                    correctAnswer.stop();
                }
                else // ber sin chea answer dol index 35 hery jang back to index 0
                {
                    // passing array index
                    //String name = getResources().getResourceEntryName(imageAdapter.mThumbIds[position+1]);
                    i.putExtra("image_name", "apple");
                    i.putExtra("id", 0);
                    i.putExtra("rememberID_frist", firstTimeID_1);
                    i.putExtra("rememberID_second", 0);
                    whatfruit.stop();
                }
                startActivity(i);
            }
        });

谢谢!

4

1 回答 1

0

似乎您只想在单击按钮时增加位置的值,并且位置不是 35。由于您将四个值作为 IntentExtras 传递,请尝试以下操作:

创建作为 Extras 传递的四个值,也作为 Activity 中的全局变量。在onCreate()中,您可以将传递的值分配给此变量(例如位置)。那么你所要做的onClickListener就是

fruit_q.setOnClickListener(new OnClickListener() //Next step
        {
            public void onClick(View v)
            {
                if(position != 35) //35 is end of index in gridview array
                {
                    id = position + 1;
                    secondID = position + 1;
                }
                else // ber sin chea answer dol index 35 hery jang back to index 0
                {
                    id = 0;
                    secondID = 0;
                }
                // call method to show this new values (1)
            }
        });

(1)中提到的方法你可以设计成它设置你的 Activity 的所有视觉和背景计算的东西,以便它可以onCreate()从你的onClickListener.

例子

public class MyActivity extends Activity{
    // ...    

    private int a, b, c;

    protected void onCreate(Bundle b){
        // do usual stuff
        a = getIntent().getIntExtra("a");
        b = getIntent().getIntExtra("b");
        c = getIntent().getIntExtra("c");
        // ...
        fruit_q.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                a += 1;
                b += 2;
                c -= 3;
                displayStuff();
            }
        }
        displayStuff();
    }

    private void displayStuff(){
        // get displaying components like TextView
        // set some of the values like a, b or c as Text
    }

    // ...
}

我没有直接检查这段代码,它应该只是向您展示我的意思。像这样,您可以直接在 Activity 中操作现有值而无需刷新它。

于 2013-06-19T11:31:33.223 回答