-3

我有以下内容:

</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);

            }

活动二:

    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 语句来查看用户单击了哪些按钮并采取相应的行动?我希望用户能够按下按钮 1 或按钮 2 或 3、4 等...

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

按钮位于不同的活动中。我使用意图将按钮从 activity1 传递到此活动。

4

1 回答 1

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"for eachButton然后在您的第一个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);
}

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

Button btn1 = (Button) findViewById(R.id.someId);
...

然后onClickListener为每个设置

btn1.setOnClickListener(this);

onClick()并像我的第一个示例一样使用该功能。但是你还必须记住实施OnClickListener

public class MyActivity extends Activity implements OnClickListener{

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

于 2013-06-19T23:25:43.880 回答