我制作了一个简单的Android游戏,用户通过点击单选按钮选择问题的答案(参见Activity1)。单击正确的单选按钮后,“Credits”(Activity2)中的按钮将变为VISIBLE并可供用户使用。
我怎样才能实现这一目标?我不能让这两个活动一起工作吗?
用户点击radiobutton的活动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();
}
});
来自Activity2的代码,其中按钮应该可见:
公共类Activity2扩展了Activity {
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);
希望有人能够帮助我 谢谢
答案 0 :(得分: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 :(得分:2)
要了解此问题的最佳答案,您必须了解Android中的每个Activity基本上都与其他任何活动隔离。这意味着您无法将小部件可见性等内容从一个活动更改为另一个活动。
也就是说,当您启动第二项活动时,最佳解决方案可能会使用Intent
传递额外内容。遵循these steps即可轻松完成。
我希望这有帮助!
答案 2 :(得分:1)
你可以通过不同的方式来做到这一点:
1)在Activity2中实现静态方法,并从Activity1中调用它。不要直接更改可见性 - 只需更改Activity2的某些静态字段,然后在onStart()
2)启动Activity2时,将值放入Intent,然后在Activity2中处理它们。但请记住,用户可以使用“后退”按钮,因此您需要正确处理它(例如,您可以.finish()活动,然后启动新活动。)
第一个可能听起来更容易,但试图避免这种静态方法。第二种方式更适合您的应用设计。
答案 3 :(得分:1)
在Activity1中
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);
希望这个帮助
答案 4 :(得分:0)
您应该使用 Intent 将活动更改为其他活动:
Intent intent = new Intent(thisClss.this, AnOtherClass.class);
startActivity(intent);