Вызов действия из пользовательского диалога - PullRequest
1 голос
/ 24 января 2011

Полагаю, это простой вопрос (я такой нуб ...) У меня есть это диалоговое окно, в котором есть 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 () {}» Эххх? Пожалуйста, сориентируйте меня, как это сделать правильно. Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 24 января 2011

Предположим, что ваша деятельность называется А, тогда вы просто делаете:

   A.this.startActivity(myIntent);

Проблема возникает из-за того, что «this» внутри вашего внутреннего класса относится к объекту этого внутреннего класса, когда то, что вы хотите, является объектом вмещающего Activity. А. это будет относиться к этому.

Если вы не включаете этот класс в Activity, попробуйте вызвать метод startActivity из метода с использованием контекста, который вы передали в метод, например, context.startActivty (myIntent). Метод startActivity принадлежит классу Context.

1 голос
/ 24 января 2011

Я уверен, что вы слишком усложняете работу с подклассами из Dialog. Попробуйте перейти к обучающей программе диалога - https://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog

Обратите внимание, что диалоги создаются на лету (в Activity.onCreateDialog()) без необходимости иметь свои собственные классы диалогов. Поскольку вы устанавливаете прослушиватель внутри действия обертывания (если вы следуете учебнику), вы можете вызвать startActivity(myIntent), поскольку все поля / методы экземпляра класса обертки доступны для экземпляра внутреннего класса.

...