Я думаю, это простой вопрос (Im такой noob...) У меня есть это настраиваемое диалоговое окно с тремя кнопками.
Теперь я хочу вызвать действие с одной из кнопок, чтобы Я пробовал это:
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);
}
});
...
}
Затем появляется красная строка squiggly на startActivity (myIntent). При наведении на него затмение говорит мне следующее: "Метод startActivity (Intent) - это undefined для типа new View.OnClickListener() {}" Эххх? Пожалуйста, сориентируйте меня на том, как это сделать правильно. Любая помощь будет оценена.
Я уверен, что вы чересчур с подклассом от Dialog
. Попробуйте выполнить диалог диалога - https://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog
Обратите внимание, что диалоги создаются "на лету" (в Activity.onCreateDialog()
) без необходимости иметь свои собственные классы диалога. Поскольку вы устанавливаете прослушиватель внутри операции переноса (если вы следуете учебнику), вы можете вызвать startActivity(myIntent)
, потому что все экземпляры класса/методов экземпляра класса экземпляра доступны для экземпляра внутреннего класса.
Предположим, что имя вашей операции равно A, а затем вы просто выполните:
A.this.startActivity(myIntent);
Проблема возникает из-за того, что "this" внутри вашего внутреннего класса относится к объекту этого внутреннего класса, когда то, что вы хотите, является объектом включенной Activity. A. это будет ссылаться на это.
Если вы не включаете этот класс в Activity, попробуйте вызвать метод startActivity из метода, используя контекст, который вы передали в метод, например. context.startActivty(myIntent). Метод startActivity относится к классу Context.