Java 将参数/参数传递给OnClickListener()
我刚接触安卓系统,我仍在努力思考其中的一些概念,所以如果我不得不要求经常澄清的话,我很抱歉 我正在尝试覆盖/创建我自己的Java 将参数/参数传递给OnClickListener(),java,android,onclicklistener,Java,Android,Onclicklistener,我刚接触安卓系统,我仍在努力思考其中的一些概念,所以如果我不得不要求经常澄清的话,我很抱歉 我正在尝试覆盖/创建我自己的OnClickListener。然而,我得到了这个错误,说startActivity(Intent)对于我的类是未定义的…我不明白为什么我会得到这个错误 import android.content.ActivityNotFoundException; import android.content.Intent; import android.net.Uri; import a
OnClickListener
。然而,我得到了这个错误,说startActivity(Intent)
对于我的类是未定义的…我不明白为什么我会得到这个错误
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
public class ContactOCL implements OnClickListener {
String contactInfo;
public ContactOCL(String contactInfo) {
this.contactInfo = contactInfo;
}
public void onClick(View v) {
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + contactInfo));
startActivity(callIntent); // Error here
} catch (ActivityNotFoundException activityException) {
Log.e("Calling a Phone Number", "Call failed", activityException);
}
}
}
要开始一项活动,您需要一项活动 一个解决方案是将您的活动传递给ContactOCL类
public ContactOCL(Activity activity, String contactInfo) {
this.contactInfo = contactInfo;
this.activity = activity;
}
然后使用
activity.startActivity(callIntent)代码>
然后,当您创建这个ContactOCL类时,您可以通过添加活动参数来完成,比如:newcontactOCL(这个,contactInfo)代码>(我假设您从活动类创建ContactOCL)
编辑:虽然我的解决方案适用于一般情况,但对于这种特殊情况,不必这样做,因为您可以从视图访问活动。相反,请参见。,因为您已经将视图
传递给了onClick()
,所以无需将活动也传递给封闭类。只要做:
v.getContext().startActivity(callIntent);
该类将作为活动中的内部类运行
-只需将其放入并删除公共
类修饰符:
public class MyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
class ContactOCL implements OnClickListener {
String contactInfo;
public ContactOCL(String contactInfo) {
this.contactInfo = contactInfo;
}
public void onClick(View v) {
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + contactInfo));
startActivity(callIntent); // No Error here
} catch (ActivityNotFoundException activityException) {
Log.e("Calling a Phone Number", "Call failed", activityException);
}
}
}
}
发布你的logcat错误。巴尼:这是一个编译时错误。你的清单中声明了意图/类吗?没有人读:(startActivity不像他那样存在于普通类中。他需要访问上下文才能调用它。你不能从非活动类启动活动。+1比我有的解决方案更好。我应该对自己说:“保持简单,愚蠢”在正常情况下,你的方式就是前进的方式:-)+1。这是我通常的方式。有时我倾向于过度使用内部类:)