2011-01-24 5 views
1

Я думаю, что это простой вопрос (я такой noob ...) У меня есть это настраиваемое диалоговое окно, в котором есть 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) появляется красная волнистая линия. При наведении на него затмение говорит мне следующее: «Метод startActivity (Intent) не определен для нового типа View.OnClickListener() {}" Ehhh? Пожалуйста, сориентируйте меня на том, как это сделать правильно. Любая помощь будет оценена по достоинству.

ответ

1

Уверен, что вы чересчур с подклассификацией от Dialog. Попробуйте выполнить диалог диалога - https://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog

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

+0

Спасибо. Я попробую это. : D Учебник, который я последовал, был довольно простым, и он включал создание отдельного класса из моего основного класса. :(Сначала я подумал, что причина, по которой мой код не работал, состоял в том, что я вызывал активность из класса без активности. PS: Я редко читал документацию по Android, потому что это не так дружит с новыми программистами. попробуйте на этот раз, я должен заставить все работать !!! Neh neh! neh! –

2

Пусть название вашей деятельности является, то вы просто сделать:

A.this.startActivity(myIntent); 

Проблема возникает потому, что «это» внутри внутреннего класса относится к объекту этого внутреннего класса, когда то, что вы хотите, объект прилагаемой Деятельности. А. это будет означать это.

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

+0

Действительно? Благодаря! Я попробую это прямо сейчас. : D Большое вам спасибо ... :) –

Смежные вопросы