Domanda

Credo che questa è solo una semplice domanda (io sono un niubbo ...) Ho questa finestra di dialogo personalizzato che ha 3 tasti in esso.

Ora voglio chiamare un'attività da uno dei pulsanti in modo Ho provato questo:

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);

            }
        });
...
}

Poi appare la linea ondulata rossa sul startActivity (myIntent). Al momento in bilico su di esso, Eclipse mi dice questo: “Il metodo startActivity (Intent) non è definito per il tipo di nuova View.OnClickListener () {}” Ehhh? Vi prego di orientarsi su come farlo correttamente. Qualsiasi aiuto sarebbe apprezzato.

È stato utile?

Soluzione

Sono sicuro che sono overcomplicating con sottoclasse da Dialog. Provate a seguire alla finestra di esercitazione - https://developer.android. com / guide / argomenti / ui / dialogs.html # ShowingADialog

Si noti che le finestre di dialogo sono create al volo (in Activity.onCreateDialog()), senza la necessità di avere le proprie classi di dialogo personalizzate. Dal momento che si imposta un ascoltatore essere all'interno delle attività di avvolgimento (se seguite il tutorial), allora si è in grado di chiamare startActivity(myIntent), perché tutti i campi / metodi di un'istanza di classe involucro sono disponibili per un'istanza di una classe interna.

Altri suggerimenti

Si supponga che il nome della vostra attività è A, allora basta fare:

   A.this.startActivity(myIntent);

Il problema sorge perché "questo" all'interno della vostra classe interna si riferisce all'oggetto di quella classe interna, quando ciò che si vuole è l'oggetto della racchiude attività. A.Questa faranno riferimento a questo.

Se non racchiudi questa classe in un'attività, quindi provare chiamando lo startActivity dal metodo che utilizza il contesto che avete passato nel metodo, per esempio context.startActivty (myIntent). Il metodo startActivity appartiene alla classe Context.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top