Fellas,我一直在试图在TextView上实现一个相当简单的onClick操作,但没有成功。这是我的代码:
public class AccountsActivity extends Activity {
final Context context = this;
private TextView tvNextOkin;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_account);
tvNextOkin = (TextView) findViewById(R.id.tv_acc_next_of_kin);
tvNextOkin.setText("Not set. Tap here to add");
tvNextOkin.setTextColor(Color.RED);
}
public void performClick(View view){
Log.i("Action::", "clicked!!");
// add listener
tvNextOkin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// custom dialog
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("This is a custom dialog");
dialog.show();
}
});
}
}
这是xml布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="2dp" >
<TextView
android:id="@+id/tv_acc_next_of_kin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="tap here to add"
android:textColor="#000"
android:textSize="14dp"
android:onClick="performClick"
android:typeface="sans" />
</LinearLayout>
</ScrollView>
我的目标是在单击textview时调用performClick()方法。有什么建议吗?
答案 0 :(得分:1)
在{xml
中为android:clickable="true"
添加TextView
并且@ Altaf在他的回答中提到,删除听众。 只是,
public void performClick(View view){
Log.i("Action::", "clicked!!");
// custom dialog
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("This is a custom dialog");
dialog.show();
}
或替代方法是删除android:onClick="onClick"
并在您的活动中为onClickListener
实施TextView
。
答案 1 :(得分:0)
删除侦听器
tvNextOkin.setOnClickListener(new OnClickListener() {}
你只需要performClick方法
答案 2 :(得分:0)
你应该在onCreate()中注册你的onClick监听器。 您可以参考Android SDK文档。
答案 3 :(得分:0)
在xml中添加此文本以进行textview
android:onClick="onClick"
android:clickable="true"
并执行点击操作
public void onClick(View v) {
...
}
答案 4 :(得分:0)
我看到了你的问题。
当您设置 android:onClick =“performClick”时,这意味着,当用户单击TextView时,将调用方法performClick。
在此方法中将执行:为 tvNextOkin设置onClickListener
它没有显示任何对话框。 :d
解决方案:
<TextView
android:id="@+id/tv_acc_next_of_kin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="tap here to add"
android:textColor="#000"
android:textSize="14dp"
android:typeface="sans" />
tvNextOkin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// custom dialog
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("This is a custom dialog");
dialog.show();
}
请勿将其置于 performClick 方法中。
希望这会对你有所帮助。
此致