从自定义对话框调用活动

时间:2011-01-24 19:54:40

标签: android android-activity customdialog

我想这只是一个简单的问题(我就是这样的菜鸟......) 我有这个自定义对话框,里面有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 个答案:

答案 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),因为包装类实例的所有字段/方法都可用于内部实例类。