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 告诉我:“新 View.OnClickListener(){} 类型的方法 startActivity(Intent) 未定义”嗯?请指导我如何正确执行此操作。任何帮助,将不胜感激。

4

2 回答 2

2

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

   A.this.startActivity(myIntent);

出现问题是因为您的内部类中的“this”指的是该内部类的对象,而您想要的是封闭 Activity 的对象。A.this 将指那个。

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

于 2011-01-24T20:00:33.290 回答
1

我相信你对从Dialog. 尝试遵循对话教程 - https://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog

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

于 2011-01-24T20:17:06.003 回答