2013-05-19 111 views
1

我做了一個類(Paperclip),它使得一個自定義對話框出現在屏幕上。在我的活動中,我創建了Paperclip的一個實例,並使對話框顯示在活動上。我想要的是當某個按鈕被按下時,活動上的一些代碼被執行。我希望從活動中執行此代碼,因爲我想要一個對話框,可以在項目中的許多不同活動上重複使用該對話框。從課上,從一個活動中調用一個函數

我正在考慮在課堂上做一個變量,並在活動中附加一個監聽器。這是一個好方法,還是有一個更簡單的解決方案?

public class Paperclip { 
    int i = 0; 
    Dialog myDialog; 
    TextView t; 
    int mid; 
    Context context2; 

    public Paperclip(Context context) { 
     super(); 
     context2 = context; 
    } 

    public void Showit(final String[] Messages) { 
     final int lengte = Messages.length; 

     myDialog = new Dialog(context2, R.style.CustomDialogTheme); 
     myDialog.setContentView(R.layout.messagebox); 
     t = (TextView) myDialog.findViewById(R.id.message); 
     if (lengte != 0) { 
      if (i < lengte) { 
       t.setText(Messages[i]); 
       i++; 
      } 
      Button iets = (Button) myDialog.findViewById(R.id.mbja); 
      iets.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View v) { 
        if (i < lengte) { 
         t.setText(Messages[i]); 
         i++; 
        } else{ 
         t.setText("Ik hoop dat deze informatie nuttig was. Klik op Ja om alles opnieuw te horen."); 
         i = 0; 
        } 

       } 
      }); 
     } 
     Button iets2 = (Button) myDialog.findViewById(R.id.button2); 
     iets2.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       myDialog.dismiss(); 
      } 
     }); 

     Button iets3 = (Button) myDialog.findViewById(R.id.button3); 
     iets2.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       //TODO: execute code from activity here. 
      } 
     }); 

     myDialog.show(); 
    } 
} 

謝謝!

+1

請添加代碼片段 – Chris

+0

除非您想讓對話框成爲一個組件(可在其他項目中重用),否則我只需將它傳遞給活動實例的引用並直接調用該方法。 – SJuan76

+0

你應該讀一些關於[DialogFragments](http://developer.android.com/guide/topics/ui/dialogs.html) – thepoosh

回答

0

Button上設置一個OnClickListener,然後在onClick()事件中調用您的方法。

public class MyActivity extends Activity { 
    Button myButton; 
    String[] mMessages = new String[]{"Message 1", "Message 2", "Message 3"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     myButton = (Button) findViewById(R.id.myButton); 

     myButton.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       Paperclip p = new Paperclip(MyActivity.this); 
       p.showit(mMessages); 
      } 
     }); 
    } 
} 

編輯:糾正錯別字&更新的代碼 編輯#2:基於新的問題和代碼片段

+0

該按鈕位於類內的對話框中。所以我猜這對我不起作用。 – user2398657

+0

編輯:誤解了評論。總之,最好閱讀關於(對話框)和DialogFargment的建議。 – Krauxe

0

您必須在活動創建對話框按鈕的一個實例和一個監聽事件添加到更新後的代碼它和張貼此監聽器裏的代碼

0

,你可以嘗試使用廣播聽衆之外,實施廣播的活動,並從你的類發送 這裏是很好example