【问题标题】:Accessing widgets in one Activity from another Activity从另一个 Activity 访问一个 Activity 中的小部件
【发布时间】:2014-09-21 21:09:34
【问题描述】:

我想在一个Activity 中访问小部件,并使它们在另一个Activity 中不可见。

活动 1

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="button"
    android:id="@+id/button" />

活动 2

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_two);

    EditText name = (EditText) findViewById(R.id.name);
    if(name.getText().toString().equals("john"){
        button.setEnabled(false);
    }
}

有什么方法可以使按钮从活动 2 中隐藏?

【问题讨论】:

  • 你能告诉我们如何在 two.class 中显示 One.class 按钮吗?我们必须学习如何做到这一点。
  • 我不知道该怎么做这就是我问的原因。
  • 首先这是不可能的,请让我知道您实际尝试做什么,以便我们尝试以另一种方式实现您的要求。
  • 我正在制作游戏,当这个人完成关卡时,我希望下一个关卡可用,例如真的
  • 不清楚你想做什么,能不能详细点?

标签: android android-activity android-widget


【解决方案1】:

您可以使用您正在使用的意图来启动第二个活动来传递您需要的参数。 要将参数放入意图中,您可以使用任何 intent.putExtra 方法。你可以找到所有方法的描述here。 因此,如果您想输入一个布尔值,您可以执行以下操作:

secondActivityIntent.putExtra("my_bool", false);

然后开始你的第二个活动,然后在你的第二个活动上你可以得到你的参数:

getIntent().getBooleanExtra("my_bool");

检索数据的不同方法也可以在上一个链接中找到。

此外,要使视图不可见,您应该使用button.setVisibility(View.GONE)button.setVisibility(View.INVISIBLE) 方法,而不是button.setEnabled(false);

希望对你有帮助,干杯!

【讨论】:

    【解决方案2】:

    您可以在应用程序单例中保持按钮的可见性:

    public class App {
        static private App instance;
    
        private boolean buttonVisible;
    
        private App(){
            buttonVisible = true;
        }
    
        public static App getInstance() {
            if (instance==null)
                instance = new App();
            return instance;
        }
    
        public boolean isButtonVisible() {
            return buttonVisible;
        }
    
        public void setButtonVisible(boolean buttonVisible) {
            this.buttonVisible = buttonVisible;
        }
    }
    

    第一个 Activity 可以在 onStart() 方法中设置其按钮的可见性 根据可见性状态:

    @Override
    protected void onStart() {
        super.onStart();
        findViewById(R.id.button).setVisibility(
            App.getInstance().isButtonVisible()?View.VISIBLE:View.GONE);
    }
    

    第二个Activity可以使用改变可见性状态

        EditText name = (EditText) findViewById(R.id.name);
        if(name.getText().toString().equals("john"){
            App.getInstance().setButtonVisible(false);
        }    
    

    每次第一个活动获得焦点时,它都会运行其 onStart() 方法,并且按钮将根据 App 单例中的可见性状态可见或不可见。

    【讨论】:

      【解决方案3】:

      在第一个活动中:

      public class MainActivity extends AppCompatActivity {
      public static MainActivity mThis = null;
      .
      .
      @Override
      protected void onCreate(Bundle savedInstanceState) {
      
          mThis=this;
          .
          .
      }
      

      }

      在第二个活动中:

      TextView txt=MainActivity.mThis.findViewById(R.id.txtFrom);
      txt.setText("Hellow I'm From Second Activity");
      

      【讨论】:

        【解决方案4】:

        您可以使按钮不可见或可点击为 false

        【讨论】:

        • 问题是如何做到这一点。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-28
        • 1970-01-01
        • 2016-05-26
        • 1970-01-01
        • 1970-01-01
        • 2014-12-20
        • 1970-01-01
        相关资源
        最近更新 更多