Android - onclick,更改TextView内容,背景颜色和设置可见性消失

时间:2014-01-25 17:17:02

标签: android android-intent background textview

您好我是Android开发的新手。这是我的问题:

有两个活动,如下所示。

  • Activity1.class XML - >有两个按钮

    Button1 (Id:@ + id / btn1,onclick:doTHIS)和 Button2 (Id:@ + id / btn2,onclick:doTHAT)

  • Activity2.class XML - >有一个带有此参数的TextView

    Textview (ID:@ + id / texter,文字:@ + string / text1,背景:#ffffff)

点击Button1,我想转到Activity2并更改

  • TextView的背景为#000000
  • 文本到@ + sting / text2

点击Button2,我想去Activity2和

  • 将TextView设置为visible:gone(不可见)

我尝试这样做没有结果。

public void doTHIS(View view){
    TextView tv= (TextView)findViewById(R.id.texter);
    tv.setText(getResources().getString(R.string.text2));
    tv.setTextColor(Color.RED);
    tv.setVisibility(View.GONE);
    Intent intent = new Intent (this, Activity2.class);
    startActivity(intent);

任何人都可以帮我弄清楚如何解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

在加载之前,您无法更改其他布局上的控件。换句话说,当您在Activity1中时,无法更改Activity2布局中的TextView。

我确信有几种方法可以达到你想要的效果。其中一个是将Intent中的一个标志传递给Activity2,指示按下了哪个按钮,然后采取相应的行动。

  1. 在Activity1中,如果按下Button1,则传递整数1,如果按下Button2,则传递2,因此按如下所示更改点击侦听器:

    public void doTHIS(View view) {
        Intent intent = new Intent(this, Activity2.class);
        intent.putExtra("button", 1);
        startActivity(intent);
    }
    

    public void doTHAT(View view) {
        Intent intent = new Intent(this, Activity2.class);
        intent.putExtra("button", 2);
        startActivity(intent);
    }    
    
  2. 在Activity2中,在onCreate()中,检查调用此活动的按钮,并进行更改(注意:我们在setContentView()之后执行此操作):

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        setContentView(R.layout.activity2);
    
        //now, let's check which button got us here
        int button = getIntent().getIntExtra("button", 1);
    
        TextView tv = (TextView) findViewById(R.id.texter);
    
        switch (button) {
            case 1:
                tv.setText(getResources().getString(R.string.text2));
                tv.setTextColor(Color.RED);
                //whatever else you want to do
                break;
            case 2:
                tv.setVisibility(View.GONE);
                break;    
        }
    
        //rest of your code
    }
    
  3. 详细了解在活动herehere之间传递数据。