OnClick似乎并没有被调用
问题描述:
我试图打开一个按钮的Web浏览器窗口onclick。OnClick似乎并没有被调用
我的点击事件似乎没有被调用。 LogCat显示没有错误或任何证据被调用。我有一种感觉,这是由于我有两种方法名为'onClick
',但删除第二种方法会导致错误。我可以通过使MainActivity抽象来解决这个错误,但是会使应用程序崩溃。
我觉得这是一个简单的修复方法,但是在翻阅了一些文档和几个教程后,我找不到答案。
代码在下面,接着是我的清单。提前致谢。
package com.spotsofmagic.spotsofmagic;
import android.app.Activity;
import android.app.AlertDialog;
import android.bluetooth.BluetoothAdapter;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.Uri;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
private static final String TAG = "Activity...";
private NfcAdapter mAdapter;
private TextView mTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
// grab our NFC Adapter
mAdapter = NfcAdapter.getDefaultAdapter(this);
// TextView that we'll use to output messages to screen
mTextView = (TextView)findViewById(R.id.text_view);
//displayMessage("Loading payload...");
}
private void displayMessage(String message) {
mTextView.setText(message);
}
public void onClick(View v) {
// TODO Auto-generated method stub
// do something when the button is clicked
displayMessage("Loading broswer");
Uri uriUrl = Uri.parse("http://www.***.com/");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
if(v.getId() == R.id.btnVisitWebsite) {
}
}
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}
而且清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.spotsofmagic.spotsofmagic"
android:versionCode="1"
android:versionName="1.0" android:installLocation="auto">
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".CardActivity"
android:label="@string/app_name" >
<!-- Handle a collectable card NDEF record -->
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<data android:mimeType="application/vnd.spotsofmagic.spotsofmagic"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
答
你有一个OnClickListener
,但你不重视它到任何按钮。尝试
((Button) findViewById(R.id.your_button_id)).setOnClickListener(this);
编辑:另一个问题是,您在Activity
实施DialogInterface.OnClickListener
,而不是View.OnClickListener
。
取下进口
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
并添加
import android.view.View.OnClickListener;
您还可以删除
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
在此之后
。
答
因为你没有点击事件相关联。
如果您绑定到按钮(或)的东西,你需要为做它绑定“这个”
例子:
button.setOnClickListener(this);
答
为避免混淆,如果不是以编程方式创建视图,也可以使用XML。你可以做这样的事情。
<Button android:width="20dp" android:height="20dp" android:onClick="openBrowser" />
,并提供尽可能
public void openBrowser(View v)
{
/* do your stuff here */
}
+0
谢谢,我会为不同的选项+1。我会保持它的未来发展,然后以编程方式进行。 – Mike
这是有道理的在你的程序的方法,但是:'findViewById(R.id.btnVisitWebsite).setOnClickListener(本);''里面引起MainActivity'各种错误(“不适用于参数”)。我做的事显然是错误的? – Mike
在我的代码中将'findViewById(R.id.btnVisitWebsite)'强制转换为'Button'。 '((Button)findViewById(R.id.btnVisitWebsite))。setOnClickListener(this)' –
我更新了我的答案 –