首页 文章

从自定义对话框调用活动

提问于
浏览
1

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

  • 1

    我确信你从 Dialog 的子类化过度复杂化 . 尝试按照对话框教程 - https://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog

    请注意,对话框是动态创建的(在 Activity.onCreateDialog() 中),无需拥有自己的自定义对话框类 . 由于您将侦听器设置在包装活动内(如果您按照教程),那么您可以调用 startActivity(myIntent) ,因为包装类实例的所有字段/方法都可用于内部类的实例 .

  • 2

    假设您的Activity的名称是A,那么您只需执行以下操作:

    A.this.startActivity(myIntent);
    

    问题出现了,因为内部类中的“this”引用了内部类的对象,当你想要的是封闭Activity的对象时 . 这将参考 .

    如果您没有在Activity中包含此类,则尝试使用传递给方法的上下文从方法调用startActivity,例如context.startActivty(myIntent) . startActivity方法属于Context类 .

相关问题