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{