如何在单击另一个单选按钮时在一个活动中显示按钮?

问题描述:

我做了一个简单的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

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); 

希望这有助于

你应该使用意向变革的活动的其他活动:

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

这可以通过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)的活性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

要理解此问题的最佳答案,您必须了解Android中的每个活动与其他任何活动基本隔离。这意味着你不能改变诸如从一个活动到另一个活动的小部件可视性等事情。

也就是说,最好的解决方案很可能会在开始第二个活动时使用Intent来传递额外信息。按照these steps可以很容易地完成。

我希望这有助于!