如何将按钮设置为从一个活动隐藏到另一个活动?

时间:2016-08-02 03:13:00

标签: android

我是一名Android开发者,我需要一些帮助。 我有一个活动(活动1),其中有一个名为" MORE"的按钮,点击后会将我带到另一个活动。这很好用。 我有另一项活动(活动2)。当我点击一个复选框时,我需要按下按钮" MORE"在活动中看不见1。 我发现了其他类似的问题,但这是一个错误,我无法弄清楚。

我在活动1中将按钮设为静态

public static Button btn2;

在活动2中,我将其设置为不可见

public void onClick(View view) {

        Intent i;

        switch (view.getId()) {

            case R.id.checkBox2:
                // set invisible button more in stock quotes
                StockDetail.btn2.setVisibility(View.INVISIBLE);
                break;

            default:
                break;

    }
}

抛出这个错误:

  

java.lang.NullPointerException:尝试调用虚方法' void android.widget.Button

我在此链接中发现了类似的问题: Android: Hide button from another activity 我确实喜欢这样,但它仍然没有。如果有人可以帮助我,我感激不尽。谢谢

4 个答案:

答案 0 :(得分:0)

我认为你应该通过SharePreference文件保存一个变量,如isShow(boolean)。当您打开activity1时,您将在sharepreference文件中获得价值。 如:如果是真的 - >你会为按钮设置可见。

答案 1 :(得分:0)

不要使用任何可能使用context的变量(如按钮),因为它可能极易受到内存泄漏的影响。通常有各种设计模式来避免这些。

针对您的案例的简单解决方案可以使用Activity2Activity1开始startActvityForResult()。在此设置中,Activity1需要Activity2的某种结果。在你的情况下,它将是你的按钮的状态。要了解有关它的更多信息,请访问此[非常小的]官方培训文档:Getting a Result from an Activity

如果你遇到任何问题,请告诉我们。

答案 2 :(得分:0)

您可以像这样应用空点检查

if(StockDetails.btn2 != null)
 {
  StockDetails.btn2.setVisiblity(View.Gone);
 }

答案 3 :(得分:0)

在创建StockDetail之前,这将无效。或者,您可以在StockDetail类中创建一个静态变量,如下所示: -

public class StockDetail extends Activity{
 public static int buttonVisibility=View.VISIBLE;

@override
public void onCreate(Bundle savedInstanceState){
  setContentView(R.layout.act2);
  Button btn=(Button)findViewById(R.id.btn);
  btn.setVisibilty(buttonVisibility);

}

和来自Activity1

public void onClick(View view) {

        Intent i;

        switch (view.getId()) {

            case R.id.checkBox2:
                // set invisible button more in stock quotes
                StockDetail.buttonVisibility=View.INVISIBLE;
                break;

            default:
                break;

    }
}

尝试以上方法可能对您有所帮助。