Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java extras.getString动态按钮?_Java_Android - Fatal编程技术网

Java extras.getString动态按钮?

Java extras.getString动态按钮?,java,android,Java,Android,我有以下资料: </LinearLayout> <LinearLayout android:id="@+id/layout8" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button

我有以下资料:

</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"/>
活动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语句来查看用户单击了哪些按钮并相应地执行操作?我希望用户能够按下按钮1,或按钮2,或3,4等

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


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

如果对每个
按钮使用相同的侦听器(我建议在这种情况下使用),则可以根据单击的
按钮指定文本

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);
现在,在下一个
活动中
您将获得您单击的
按钮的文本

你想要这个

要使用一个侦听器,您可以为每个
按钮设置
android:onClick=“functionName”
,然后在第一个
活动中使用该功能。那就好像

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 btn1 = (Button) findViewById(R.id.someId);
...
然后为每个设置
onClickListener

btn1.setOnClickListener(this);
并使用
onClick()
函数,就像我的第一个示例一样。但是,您还必须记住实现
OnClickListener

public class MyActivity extends Activity implements OnClickListener{

在这种情况下,我建议使用xml进行此操作,因为它基本上是复制/粘贴的,并且您只有一个函数,不必设置侦听器

如果您想要一个好的答案,您需要解释更多的含义。这些按钮在哪里?同样的活动?给我们一些背景?实际上你也可以反过来。要查看用户点击了哪个按钮,请为每个按钮定义单独的onClickLister。然后根据单击的“曾经”开始一个新的活动,或者做任何你想做的事情。如果你想通过不同的点击来传递不同的东西,那么把它传递到listner中。看看我的答案。它应该满足你的需要。使用一个监听器,你可以只使用一个
Intent
hmm,几个问题,而我正在试图消化这个问题。按钮btn=(按钮)v,为什么我需要这个?我的代码中没有这个,它可以工作。这样做的目的是什么?并通过使用:intent.putExtra(“button1”,buttonText);这不意味着要对一个特定的按钮做出反应吗?如果用户按下按钮2怎么办?基本上使用我回答中的第二个代码段和关于用xml声明函数的部分,您会很好。我假设
按钮
是您在代码中初始化的
按钮。您的代码将为您提供该
按钮的文本
,但它是否为您提供单击的
按钮
的文本?在
中,public void onClick(视图v)
v
是作为对象单击的
按钮
,因此您必须将其强制转换为
按钮才能获取文本。这允许您对所有
按钮使用相同的功能,因此只有一个侦听器。只要你按照我在回答结束时展示的两种方式之一设置听众,它就会给我该按钮的文本。但只有那个按钮。其他按钮不起作用,因为我只为“button1”构建了一个意图。所有其他按钮都需要这样做,对吗?基本上有30多个意图。。
public class MyActivity extends Activity implements OnClickListener{