2012-04-11 7 views
0

Ich versuche etwas Ungewöhnliches zu tun. Ich habe eine Hauptaktivität mit einem Menü an der Menüschaltfläche. Ein Element im Menü öffnet einen Dialog zum Auswählen eines Steuerelements, das zur Hauptaktivität hinzugefügt wird. Ich habe es funktioniert, so fügt es das Steuerelement hinzu und speichert es in einer Datenbank (damit es für den nächsten Lauf gespeichert wird). Ich muss den onClickListener des Knopfes auf onClick der Haupttätigkeit einstellen.Wie referenziere ich das onClick der Hauptaktivität von innerhalb der onClick Menthod eines Dialogs ... oder kann ich?

public class MyMainActivity extends Activity 
    implements View.OnClickListener, View.OnTouchListener 
{ 

private Context mContext; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mContext = this; 
    AbsoluteLayout mMainActivityView = new AbsoluteLayout; 
    SetContentView(mMainActivityView); 
... populate mMainActivityView from database ... 


public void onClick(View v) { 
    switch (v.id) { 
     case NEW_BUTTON_ID: 
     // TODO implement click handler 
    } 
} 
... 

... 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
     case NEW_BUTTON_DIALOG_ID: 
... 
...  
      builder.setPositiveButton(android.R.string.ok, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          int XPos = Integer.valueOf(editXPos.getText().toString()); 
          int YPos = Integer.valueOf(editYPos.getText().toString()); 
          mDataLayer.AddControl(mScreenID, Width, Height, XPos, YPos, editButtonText.getText().toString()); 
          Button button = new Button (mContext); 
          button.setLayoutParams(new AbsoluteLayout.LayoutParams(Width, Height, XPos, YPos)); 
          button.setText(editButtonText.getText().toString()); 
          mMainActivityView.addView(button); 
       // How to set Listeners from main activity? 
          button.setOnClickListener(?????); 
          button.setOnTouchListener(?????); 
          MyMainActivity.this.removeDialog(NEW_BUTTON_DIALOG_ID); 
         } 
        }); 

      builder.setNegativeButton(android.R.string.cancel, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
        MyMainActivity.this.removeDialog(NEW_BUTTON_DIALOG_ID); 
        } 
       }); 
     AlertDialog NewButtonDialog = builder.create(); 
     return NewButtonDialog; 
    } 
    return null; 
} 

Also, wie Ehrfurcht ich die onClick() Haupttätigkeit von der Schaltfläche Alertdialog withing?

+1

'main.this' wo main (Verruf für Aktivität) Aktivität ist? – Selvin

+0

Danke Selvin. Das war es, was ich vermisste. (LOL Haupt war nur für das Modell oben. Hätte ich das ganze Ding gepostet, hätte man es eine Stunde lang gelesen) – cstrutton

Antwort

0

Wie von Selvin in den Kommentaren vorgeschlagen, ich habe die OnClickListener mit einstellen benötigt: MyMainActivity.onClick

0

Warum benötigen Sie spezifischen Zugriff auf die onClick() Methode? Erstellen Sie einfach eine öffentliche Methode in Ihrer main Klasse und rufen Sie sie sowohl im Dialogfeld als auch in den onClick() Methoden der Schaltfläche auf. Leider teilen sich DialogInterface und View keine Superklasse, aber Sie können das Objekt übergeben und bei Bedarf entsprechend umwandeln.

Verwandte Themen