怎么用按钮改变课堂的textview?

时间:2016-02-10 22:43:59

标签: android string button

我有按钮1和按钮2。我还有2个TextViews,我有1个名为B的活动(按钮在活动A中)。

我希望单击按钮A,TextView A将显示在活动B中,当单击按钮B时,text2显示在活动B中。如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_A);
    Button btn1 = (Button) findViewById(R.id.button1);


    btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            // TODO Auto-generated method stub

            Intent i = new Intent(getBaseContext(), B.class);
            TextView tv= (TextView) findViewById(R.id.text1);

            startActivity(i);

        }
    });

    Button btn2 = (Button) findViewById(R.id.button2);


    btn2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


            Intent i = new Intent(getBaseContext(), B.class);
            TextView tv= (TextView) findViewById(R.id.text2);

            startActivity(i);


        }
    });

请记住,我有23个这样的按钮和23个文本。我怎么能这样做?

我怎样才能使用public static final string ??

3 个答案:

答案 0 :(得分:1)

按类别表示活动,您要做的是将活动A中的文本发送到活动B,以便您在活动B中知道您在活动B中单击了哪个按钮,我是否正确? 让我们假设我,你必须额外添加一个额外的用于调用Activity B和Activity B内部检索那个意图String extra。

类似的东西:

活动A:

    Intent i = new Intent(getBaseContext(), b.class);
    TextView tv= (TextView) findViewById(R.id.text1);
    i.putExtra(ActivityB.CALLER, tv.getText());
    startActivity(i);

活动B:

public static final String CALLER = "caller";

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

     String buttonText = getIntent().getStringExtra(CALLER);
}

答案 1 :(得分:0)

执行此操作的方法是在单击按钮A时在A类中触发某种标记。然后,当你启动B类时,你会传递一个Intent extra,通知Class B它应该显示TextView A.所以它会像这样。

在A类中,您需要听取按钮A的点击次数,并设置稍后发送给B级的相应变量。

public class A extends AppCompatActivity {

    private boolean buttonWasClicked;

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

        buttonWasClicked = false;

        Button buttonA = (Button) findViewById(R.id.buttonA);
        buttonA.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                buttonWasClicked = true;
            }
        });

    }
}

然后当你启动你的B类时,你会传递一个布尔额外的,意图通知clickA已被点击。像这样......

Intent intent = new Intent(this, B.class);
intent.putExtra("WasButtonClicked", buttonWasClicked);
startActivity(intent);

然后当B开始时,您将检索额外的内容并查看是否单击了buttonA。如果是,则显示TextView,如果没有,则隐藏它。

public class B extends AppCompatActivity {

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

        TextView textViewA = (TextView) findViewById(R.id.textViewA);

        boolean buttonWasClicked;
        Bundle args = getIntent().getExtras();
        if(args != null) {
            buttonWasClicked = args.getBooleanExtra("WasButtonClicked", false);
        }

        if(buttonWasClicked) {
            textViewA.setVisibility(View.VISIBLE);
        } else {
            textViewA.setVisibility(View.INVISIBLE);
        }
    }
}

答案 2 :(得分:0)

Activity A,如果您点击了按钮,请通过捆绑包发送信息:

活动A)

btn1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {            
     Intent intent = new Intent(this, B.class);
     intent.putExtra("buttonClicked1", true);
     startActivity(intent); 
    }
});

Button btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
     Intent intent = new Intent(this, B.class);
     intent.putExtra("buttonClicked2", true);
     startActivity(intent);
    }
});

Activity B中,接收一个布尔值,指示所选按钮buttonClicked1buttonClicked2的内容,然后设置Strings.xml文件中的相应文本。

活动B)

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

     boolean buttonClicked1;
     boolean buttonClicked2;
        Bundle args = getIntent().getExtras();
        if(args != null) {
            buttonClicked1 = args.getBooleanExtra("buttonClicked1", false);
            buttonClicked2 = args.getBooleanExtra("buttonClicked2", false);
        }

    if(buttonClicked1) {
       //Load text from Strings.xml for button1.
       String buttonText =    getApplicationContext().getResources().getString(R.string.yourText1);
               textViewA.setVisibility(View.VISIBLE);
 } else  if(buttonClicked2) {
       //Load text from Strings.xml for button1.
       String buttonText =    getApplicationContext().getResources().getString(R.string.yourText2);
            textViewA.setVisibility(View.VISIBLE);
        }

}