java - 切换多个按钮可见性

标签 java android android-layout android-intent visibility

在我的应用程序中,我试图在 RealViewSwitcher 中切换两个透明按钮的可见性(我知道这很老套)。我正在根据 RealViewSwitcher 的当前页面更改可见性。我可以让第一个按钮工作,但是第二个按钮永远不会激活。这是我的代码:

///////////////

    if(realViewSwitcher.getCurrentScreen() == 0)
    {

        final Button btn1 = (Button)findViewById(R.id.btn1);

        btn1.setOnClickListener(new View.OnClickListener()
        {       
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.addCategory(Intent.CATEGORY_BROWSABLE);
                intent.setData(Uri.parse("http://www.test.com"));
                startActivity(intent);

                btn1.setVisibility(View.GONE);

            }
        });
    } 

    else if(realViewSwitcher.getCurrentScreen() == 2)
    {
        final Button btn2 = (Button)findViewById(R.id.btn2);
        btn2.setVisibility(0);

        btn2.setOnClickListener(new View.OnClickListener()
        {       
            @Override
            public void onClick(View v) 
            {

                Intent intent = new Intent(Intent.ACTION_SEND); 
                String[] tos = { "info@email.com" }; 
                intent.putExtra(Intent.EXTRA_EMAIL, tos); 
                intent.putExtra(Intent.EXTRA_TEXT, "body"); 
                intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
                intent.setType("message/rfc882"); 
                Intent.createChooser(intent, "Choose Email Client");

            }
        });
    }

    ///////////////
    //end
    /////////////////////

这是xml

    <Button 
        android:id="@+id/btn1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@null"/>

    <Button 
        android:id="@+id/btn2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@null"
        android:visibility="gone"/> 

最佳答案

您的代码只需要稍微清理一下。

  1. 首先,您的按钮应声明为字段。实际上,它们只是 if 语句的实例变量。
  2. 出于同样的原因,点击监听器应该在 if 语句之外声明。在 onCreate() 中声明它们或者任何适合您的地方。
  3. getCurrentWindow() 设置一个开关.它比 if... else if... else if... 更容易使用.

我可以建议:

final Button btn1 = (Button) findViewById(R.id.btn1);
final Button btn2 = (Button )findViewById(R.id.btn2);

//Inside onCreate() or similar
btn1.setOnClickListener(new View.OnClickListener() {       
    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.addCategory(Intent.CATEGORY_BROWSABLE);
        intent.setData(Uri.parse("http://www.test.com"));

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  //Required to start a new activity
        startActivity(intent);

        btn1.setVisibility(View.GONE);

    }
});

//In the same place
btn2.setOnClickListener(new View.OnClickListener() {       
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(Intent.ACTION_SEND); 
        String[] tos = { "info@email.com" }; 
        intent.putExtra(Intent.EXTRA_EMAIL, tos); 
        intent.putExtra(Intent.EXTRA_TEXT, "body"); 
        intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
        intent.setType("message/rfc882"); 
        Intent.createChooser(intent, "Choose Email");
        btn2.setVisibility(View.VISIBLE);
    }
});

//Later, in your other functional code
switch (realViewSwitcher.getCurrentScreen()) {
    case 0:
        //do your stuff
        break;
    case 2:
        //other stuff
        break;
    default: //If you need it
        throw new Exception("Oops...");
}

关于java - 切换多个按钮可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10182962/

相关文章:

Java Netty 设置自动读取

javascript - 403 禁止从 Cordova 5.0.0 应用程序执行 AJAX POST

java - 在当前 Activity 之后开始 Activity

android - 如何在android中的折叠工具栏布局中放置 ScrollView ?

java - 将 Firestore 数据加载到 json 中

java - 如何通过 java 代码执行 "java"命令?

java - Spring MVC 3.1 - 请求头字符编码问题[UTF-8]

android - 味道 : run from Android Studio fails - run from device works

Android 对 flinger 术语的使用?

Android 全宽 ICS 风格 Minimalist Bottom ButtonsViews