我有一个作为主题对话框运行的活动。这是按钮clicklistener的代码。但是控件永远不会进入onClick()。控制台中没有错误。在logcat中我得到了这个(绿色) - 应用程序可能在主线程中做了太多工作。
@Override
protected void onCreate(Bundle savedInstanceState) {
....
var_btnDisconnectDone = (Button) findViewById(R.id.btnDisconnectDone);
var_btnDisconnectDone.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
intFromTimeH = Integer.parseInt(var_txtFromH.getText().toString());
intFromTimeM = Integer.parseInt(var_txtFromM.getText().toString());
intToTimeH = Integer.parseInt(var_txtToH.getText().toString());
intToTimeM = Integer.parseInt(var_txtToM.getText().toString());
}
});
XML:
<Button
android:id="@+id/btnDisconnectDone"
...
android:onClick="what do I add here??"
android:text="@string/btnSave_hint" />
答案 0 :(得分:1)
使用@Override
var_btnDisconnectDone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
intFromTimeH = Integer.parseInt(var_txtFromH.getText().toString());
intFromTimeM = Integer.parseInt(var_txtFromM.getText().toString());
intToTimeH = Integer.parseInt(var_txtToH.getText().toString());
intToTimeM = Integer.parseInt(var_txtToM.getText().toString());
}
});
从XML
中删除此行android:onClick="what do I add here??"
答案 1 :(得分:1)
如果已定义,则只需编写要在xml文件中执行click事件时要执行的方法名称。并在类文件中创建方法并在其中编写逻辑,只要单击该按钮,它就会自动执行。
在API级别4中添加了 android:onClick
,以使其更容易,更像Javascript-web,并从XML驱动所有内容。它内部的作用是在OnClickListener
上添加Button
。
以下是android:onClick="DoIt"
内部使用的内容:
Button button= (Button) findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Your logic here.
}
});
与XML配置一样,使用android:onClick
进行权衡的唯一方法就是添加动态内容变得有点困难(以编程方式,您可以决定添加一个或另一个侦听器,具体取决于您的变量)。但是,通过在DoIt
方法中添加测试,很容易就会失败。
如果你想从xml定义它,那么按以下步骤操作:
<Button
android:id="@+id/btnDisconnectDone"
...
android:onClick="ClickEvent"
android:text="@string/btnSave_hint" />
在你的类文件中写一个方法。
public void ClickEvent(View v){
//Your logic here.
}
答案 2 :(得分:0)
你没有覆盖点击功能
看到这个并检查它是否有效
var_btnDisconnectDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
intFromTimeH = Integer.parseInt(var_txtFromH.getText().toString());
intFromTimeM = Integer.parseInt(var_txtFromM.getText().toString());
intToTimeH = Integer.parseInt(var_txtToH.getText().toString());
intToTimeM = Integer.parseInt(var_txtToM.getText().toString());
}
});