gpt4 book ai didi

android - onclick 事件在 android 中不起作用

转载 作者:行者123 更新时间:2023-11-29 16:16:10 25 4
gpt4 key购买 nike

我编写了一段代码,使用 android 中的按钮单击事件输入一些文本。它根本不起作用。没有给出任何错误或异常,我不知道哪里出错了。

public void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//select_btn = (Button) findViewById(R.id.ok);
//home_btn = (Button) findViewById(R.id.home);
et = (EditText) findViewById(R.id.entry);
et.setText("", TextView.BufferType.EDITABLE );
b = new Bundle();

for (int i = 0; i < mybtn.length; i++) {
String btnid = "btn" + i;
int resid = getResources().getIdentifier(btnid, "id",
getPackageName());
mybtn[i] = (Button) findViewById(resid);
mybtn[i].setOnClickListener(this);
}
//tts.speak("hello wolrd",TextToSpeech.QUEUE_FLUSH,null);
et.setText("hello man", TextView.BufferType.EDITABLE );
}

public void onClick(View v)
{

//while(tts.isSpeaking());
et.setText("hello android", TextView.BufferType.EDITABLE );
String s=null;
s = ((Button)v).getText().toString().trim();
//tts.speak("hello google",TextToSpeech.QUEUE_FLUSH,null);
}

这是 main.xml :

<EditText
android:id="@+id/entry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:focusable="false"
android:focusableInTouchMode="false"
android:inputType="phone"
android:maxLength="20" />

<TableLayout
android:id="@+id/table"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/entry"
android:layout_marginTop="20dp"
android:stretchColumns="*" >

<TableRow>

<Button
android:id="@+id/btn0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/zero"
android:textSize="10pt"
android:visibility="visible" />

<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/one"
android:textSize="10pt"
android:visibility="visible" />

<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/two"
android:textSize="10pt"
android:visibility="visible" />

<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/three"
android:textSize="10pt"
android:visibility="visible" />
</TableRow>

<View
android:layout_height="2dip"
android:background="#FF909090" />

<TableRow>

<Button
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/four"
android:textSize="10pt"
android:visibility="visible" />

<Button
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/five"
android:textSize="10pt"
android:visibility="visible" />

<Button
android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/six"
android:textSize="10pt"
android:visibility="visible" />

<Button
android:id="@+id/btn7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/seven"
android:textSize="10pt"
android:visibility="visible" />
</TableRow>

<View
android:layout_height="2dip"
android:background="#FF909090" />

<TableRow>

<Button
android:id="@+id/btn8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/eight"
android:textSize="10pt"
android:visibility="visible" />

<Button
android:id="@+id/btn9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/nine"
android:textSize="10pt"
android:visibility="visible" />

<Button
android:id="@+id/btn10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/delete"
android:textSize="10pt"
android:visibility="visible" />

<Button
android:id="@+id/btn11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/finish"
android:textSize="10pt"
android:visibility="visible" />
</TableRow>
</TableLayout>

<View
android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="90dp"
android:layout_below="@id/table" >
</View>

最佳答案

在您的代码中,您通过 mybtn[i].setOnClickListener(this) 将 Activity 传递给 setOnClickListener() 方法,其中 this是对您的 Activity 的引用。 setOnClickListener() 需要一个 View.OnClickListener 接口(interface)作为参数。这是实现 View.OnClickListener 接口(interface)的任何对象。您可以通过两种方式执行此操作。

1) 创建一个匿名对象,例如

  mybtn[i].setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
... your code here
}
});

新的 OnClickListener() 创建了一个匿名对象,它是匿名的,因为我们没有存储对它的引用。

2) 传入一个实现View.OnClickListener() 的对象。如果您想将 Activity 对象传递给 setOnClickListener(),您必须让它声明它实现了 View.OnClickListener() 并另外覆盖 public void onClick(View v) 方法例如

public class YourActvivity extends Activity implements View.OnClickListener {

onCreate() {
}
....etc

//implement the View.OnClickListener interface
@Override
public void on Click(View v) {
...your code here
}

因为您有一组按钮并调用了 setOnClickListener(this),其中 this 是您的 Activity ,所以将为您的每个按钮调用这个方法,所以如果您如果希望每个按钮执行不同的操作,则必须将作为单击事件源的 View ID 与 XML 中的按钮 ID 进行比较,否则所有按钮在单击时的行为方式将完全相同。

要找出点击了哪个按钮,您可以这样检查

   switch(v.getId()) {
case R.id.btn0:
...do button 0 stuff;
break;
case R.id.btn1:
...do button 1 stuff;
break;
...etc
}

传递到 onClick() 回调中的 View 是点击事件源自的 View ,此处简称为 v onClick(View v)。第二种方法适用于声明和实现 View.OnClickListener 的任何对象(类)。

关于android - onclick 事件在 android 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9326975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com