我想这只是一个简单的问题(我就是这样的菜鸟......) 我有这个自定义对话框,里面有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?请指导我如何正确地做到这一点。 任何帮助将不胜感激。
答案 0 :(得分:2)
假设您的活动名称是A,那么您只需:
A.this.startActivity(myIntent);
出现问题是因为内部类中的“this”指的是内部类的对象,当你想要的是封闭Activity的对象时。这将参考。
如果您没有在Activity中包含此类,请尝试使用传递给方法的上下文从方法调用startActivity,例如: context.startActivty(myIntent)。 startActivity方法属于Context类。
答案 1 :(得分:1)
我确信你对来自Dialog
的子类过于复杂。尝试按照对话教程 - https://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog
请注意,对话框是动态创建的(在Activity.onCreateDialog()
中),无需拥有自己的自定义对话框类。由于您将侦听器设置在包装活动内(如果您遵循教程),那么您可以调用startActivity(myIntent)
,因为包装类实例的所有字段/方法都可用于内部实例类。