我想这只是一个简单的问题(我就是这样的菜鸟......)我有这个自定义对话框,里面有3个按钮 .
现在我想从其中一个按钮调用一个活动,所以我尝试了这个:
public class picturedialog extends Dialog implements OnClickListener {
Button Camera;
public picturedialog (Context context){
super (context);
setContentView(R.layout.picturedialog);
Camera = (Button) this.findViewById(R.id.pdButton1);
Camera.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
dismiss();
Intent myIntent = new Intent(view.getContext(), CameraActivity.class);
startActivity(myIntent);
}
});
...
}
然后在startActivity(myIntent)上出现红色波浪线 . 在它上面悬停时,eclipse告诉我:“方法startActivity(Intent)未定义类型new View.OnClickListener(){}”Ehhh?请指导我如何正确地做到这一点 . 任何帮助,将不胜感激 .
2 回答
我确信你从
Dialog
的子类化过度复杂化 . 尝试按照对话框教程 - https://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog请注意,对话框是动态创建的(在
Activity.onCreateDialog()
中),无需拥有自己的自定义对话框类 . 由于您将侦听器设置在包装活动内(如果您按照教程),那么您可以调用startActivity(myIntent)
,因为包装类实例的所有字段/方法都可用于内部类的实例 .假设您的Activity的名称是A,那么您只需执行以下操作:
问题出现了,因为内部类中的“this”引用了内部类的对象,当你想要的是封闭Activity的对象时 . 这将参考 .
如果您没有在Activity中包含此类,则尝试使用传递给方法的上下文从方法调用startActivity,例如context.startActivty(myIntent) . startActivity方法属于Context类 .