extras.getString动态按钮?

时间:2013-06-19 22:33:17

标签: java android

我有以下内容:

</LinearLayout>
                <LinearLayout
        android:id="@+id/layout8"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button 
            android:layout_height="wrap_content"
            android:layout_width="110dp"
            android:layout_weight="1"
            android:text="@string/button1"/>
          <Button 
            android:layout_height="wrap_content"
            android:layout_width="110dp"
            android:layout_weight="1"
            android:text="@string/button2"
            android:onClick="clickButton"/>

活性1:

            public void clickButton(View v) {
                Button btn = (Button)v;
                String buttonText = btn.getText().toString();
                Intent intent = new Intent(MainActivity.this, PickChar2.class);
                intent.putExtra("button2", buttonText);
                startActivity(intent);

            }

活动2:

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String foo = extras.getString("button1"); // how do i accept any button?

        TextView textView = (TextView) findViewById(R.id.header);

有没有办法让getString首先接受任何按钮,然后我做一个if语句来查看用户点击了哪些按钮并采取相应的行动?我希望用户能够按下button1,或button2,或3,4等...

我遇到的问题是,第一个布局中有30个按钮,我不想制作30个意图和30个extra.getStrings。我希望做的是: - 用户1按1按钮 - 活动1将该按钮传递给活动2 - 活动2检查按下了哪个按钮 - 做点什么

按钮处于不同的活动中。我使用了一个意图将活动1中的按钮传递给此活动。

1 个答案:

答案 0 :(得分:0)

如果您为每种Button使用相同的侦听器(我建议在这种情况下使用),您可以根据Button点击

分配文字
public void onClick(View v) {
      Button btn = (Button)v;  // v is the Button that was clicked so cast it to a Button
      String buttonText = btn.getText().toString();  // and get its text here
      Intent intent = new Intent(MainActivity.this, activity2.class);  
      intent.putExtra("button1", buttonText);   // then send it on its way
      startActivity(intent);

现在,在您的下一个Activity中,您将获得所点击的Button的文字

你想要这个

要使用一个侦听器,您可以为每个android:onClick="functionName"设置Button,然后在第一个Activity中使用该功能。所以就像

public void functionName(View v)
{
      Button btn = (Button)v;  // v is the Button that was clicked so cast it to a Button
      String buttonText = btn.getText().toString();  // and get its text here
      Intent intent = new Intent(MainActivity.this, activity2.class);  
      intent.putExtra("button1", buttonText);   // then send it on its way
      startActivity(intent);
}

或者你可以通过初始化每个Button

在java中完成
Button btn1 = (Button) findViewById(R.id.someId);
...

然后为每个

设置onClickListener
btn1.setOnClickListener(this);

并像我的第一个例子一样使用onClick()函数。但是,您还必须记住实施OnClickListener

public class MyActivity extends Activity implements OnClickListener{

在这种情况下,我建议在xml中进行,因为它基本上是复制/粘贴,你有一个功能而不必设置监听器