How can I make a button visible in one activity when clicking a radiobutton in another?

我们两清 提交于 2019-12-11 04:07:42

问题


Im making a simple Androidgame , where the user selects an answer to a question (ind Activity1) by clicking a radiobutton. When the correct radiobutton is clicked, a button in the "Credits" (Activity2) will get VISIBLE and be available for the user.

How can I make this happen? i can´t get the two activities to work together?

The code from Activity 1 (the Question) where the user clicks the radiobutton:

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

        }

  });

The code from Activity2 where the button should get visible:

public class Activity2 extends 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);

Hope someone is able to help me Thank you


回答1:


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

  });

In Activity 2

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

Hope this help




回答2:


This can be done via Intent's extras. Should look something like this:

//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



回答3:


To understand the best answer to this question you must understand that each Activity in Android is essentially isolated from any other activities. This means you cannot change things such as widget visibility from one activity to another.

That said, the best solution is likely to pass extras using an Intent when you start up your 2nd activity. That can be done quite easily by following these steps.

I hope this helps!




回答4:


You can do it by different ways:

1) Implement static method in Activity2, and call it from Activity1. Don't change visibility directly - just change some static field of Activity2 and then handle it in onStart()

2) When starting Activity2, put values into Intent and then handle them in Activity2. But keep in mind, that user can use "Back" button, so you need to handle it correctly (for example, you can .finish() activity and then start new one).

First one may sounds easier, but try to avoid such static methods. Second way is better for your app design.




回答5:


you should use Intent for change a activity to an other activity:

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


来源:https://stackoverflow.com/questions/8896936/how-can-i-make-a-button-visible-in-one-activity-when-clicking-a-radiobutton-in-a

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!