Android-如何从其他类别更改按钮的颜色并更改布局的可见性?

时间:2018-09-30 13:00:37

标签: java android button

当我单击按钮时:

1:应将按钮颜色更改为红色,将其他按钮更改为白色。

2:使布局可见,而其他布局不可见。

我的代码如下:


SimpleActivity

public class SimpleActivity extends AppCompatActivity {

  protected Button arealBtn;
  protected LinearLayout arealLayout;
  private SimpleBtnClk simpleBtnClk;


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

    simpleBtnClk = new SimpleBtnClk();

    arealBtn = (Button) findViewById(R.id.arealbtn);

     arealLayout = (LinearLayout) findViewById(R.id.arealLayout);


    arealBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            simpleBtnClk.ArealBtn(); 

            //arealLayout.setVisibility(View.VISIBLE);
            //arealBtn.setTextColor(Color.RED);
            //lengthLayout.setVisibility(View.INVISIBLE);
            //lengthBtn.setTextColor(Color.WHITE);

        }
    });
}

}

SimpleBtnClk类:

package simpleapps.com.converterv1;

import android.graphics.Color;
import android.view.View;

public class SimpleBtnClk extends SimpleActivity{


public void ArealBtn(){
    arealLayout.setVisibility(View.VISIBLE);
    arealBtn.setTextColor(Color.RED);
    lengthLayout.setVisibility(View.INVISIBLE);
    lengthBtn.setTextColor(Color.WHITE);
}

现在,如果我删除

  

simpleBtnClk.ArealBtn();

并删除上的注释标记

  

arealLayout.setVisibility(View.VISIBLE);
    arealBtn.setTextColor(Color.RED);
    lengthLayout.setVisibility(View.INVISIBLE);
    lengthBtn.setTextColor(Color.WHITE);

然后运行正常,但是当我尝试使用代码 simpleBtnClk.ArealBtn(); 时,该应用程序停止工作。

我看不到问题,一直盯着它看了4天,我还是看不见。

-编辑:

1也许我应该说我是java,android和编程的新手。

1 个答案:

答案 0 :(得分:0)

首先,您需要在第二个类中传递关于您的活动的引用,因此您可以将其添加到参数或传递给类构造函数,然后通过引用可以更改按钮。

例如带参数的样子:

public void ArealBtn(SimpleAcvitvity activity){
    activity.arealLayout.setVisibility(View.VISIBLE);
    activity.arealBtn.setTextColor(Color.RED);
    activity.lengthLayout.setVisibility(View.INVISIBLE);
    activity.lengthBtn.setTextColor(Color.WHITE);
}

在您的第一个活动中,将字段从受保护更改为公开;

从此:

  protected Button arealBtn;
  protected LinearLayout arealLayout;

对此:

  public Button arealBtn;
  public LinearLayout arealLayout;

您还忘记创建对lengthLayout和lengthBtn的引用。

希望这会有所帮助。