2012-01-17 69 views
2

我做了一個簡單的Android遊戲,用戶通過單擊一個單選按鈕來選擇一個問題的答案(ind Activity1)。當點擊正確的單選按鈕時,「Credits」(Activity2)中的按鈕將變爲VISIBLE並可供用戶使用。如何在單擊另一個單選按鈕時在一個活動中顯示按鈕?

我該如何做到這一點?我不能讓這兩項活動一起工作?

從活動1(問題)當用戶點擊單選按鈕的代碼:

final Button s1 = (Button) findViewById(R.id.radio0); 
final Button s2 = (Button) findViewById(R.id.radio1); 
final Button s3 = (Button) findViewById(R.id.radio2); 

s1.setOnClickListener(new OnClickListener() { 
     public void onClick(View arg0) { 
     btnEliminar.setVisibility(View.VISIBLE); 
     btnKort.setVisibility(View.VISIBLE); 
     s1.setVisibility(View.GONE); 
     s2.setVisibility(View.GONE); 
     s3.setVisibility(View.GONE); 




     AlertDialog.Builder builder = new AlertDialog.Builder(Activity1.this); 
     builder.setMessage("..."); 
     builder.setCancelable(true); 
     builder.setPositiveButton("...", new DialogInterface.OnClickListener() { 

       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 

       } 
      }); 

     AlertDialog alert = builder.create(); 
     alert.show(); 

     } 

    }); 

從活性2的代碼,其中的按鈕應該得到可見:

公共類活性2延伸活動{

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity2); 

     Button credit1 = (Button) findViewById(R.id.buttoncredit1); 
     credit1.setVisibility(View.INVISIBLE); 
     .... 
     credit1.setVisibility(View.VISIBLE); 

希望有人能幫助我 謝謝

回答

1

在活動1

s1.setOnClickListener(new OnClickListener() { 
      public void onClick(View arg0) { 

    Intent intent = new Intent(this,Activity2.class); 

    if(s1.isChecked) 
     intent.putExtra("state",0); 
    else 
     intent.putExtra("state",-1); 

    startActivity(intent); 

    }); 

在活動2

Intent intent = getIntent(); 
int state = Integer.parseInt(intent.getExtras().get("state").toString()); 
credit1.setVisibility(state); 

希望這有助於

0

你應該使用意向變革的活動的其他活動:

Intent intent = new Intent(thisClss.this, AnOtherClass.class); 
startActivity(intent); 
+0

差不多,但是你需要把'extra'到活動在它們之間傳遞數據。 – Codeman 2012-01-17 15:18:09

+0

是的,我也是,但這不是必需的。 – 2012-01-17 15:20:14

6

這可以通過Intent的演員來完成。應該是這個樣子:

//Somewhere in Activity1 
Intent intent = new Intent(); 
intent.setClass(getApplicationContext(), Activity2.class); 
intent.putExtra("makeButtonVisible", true); // Or false 
startActivity(intent); 

//Somewhere in Activity2 
boolean isButtonVisible = getIntent().getBooleanExtra("makeButtonVisible"); 
// Change button's visibility accordingly 
1

您可以通過不同的方式做到這一點:

1)的活性2實現靜態方法,並從活動1調用它。不要直接更改可視性 - 只需更改Activity2的某些靜態字段,然後在onStart()中處理它

2)當啓動Activity2時,將值放入Intent中,然後在Activity2中處理它們。但請記住,該用戶可以使用「返回」按鈕,因此您需要正確處理它(例如,您可以.finish()活動,然後啓動新的)。

第一個聽起來可能更容易,但嘗試避免這種靜態方法。第二種方法更適合您的應用程序設計。

+1

你不應該試圖控制另一個活動。這是針對Android的應用程序模型。你應該簡單地傳遞一個「真/假」的意圖。 – Codeman 2012-01-17 15:17:38

+0

@Pheonixblade9,沒錯,我更新了我的答案。 – 2012-01-17 15:20:46

+0

酷!我upvoted它:) – Codeman 2012-01-17 15:26:28

2

要理解此問題的最佳答案,您必須瞭解Android中的每個活動與其他任何活動基本隔離。這意味着你不能改變諸如從一個活動到另一個活動的小部件可視性等事情。

也就是說,最好的解決方案很可能會在開始第二個活動時使用Intent來傳遞額外信息。按照these steps可以很容易地完成。

我希望這有助於!

相關問題