2013-05-19 2 views
1

Я создал класс (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

Установите OnClickListener на Button и вызовите ваш метод внутри события 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); 
      } 
     }); 
    } 
} 

Edit: Исправлены опечатки & обновленный код Edit # 2: Обновленный код на основе обновленного вопроса и фрагмент кода

+0

Кнопка находится в диалоговом окне внутри класса. Так что это не сработает для меня, я думаю. – user2398657

+0

Редактировать: Непонятно, что комментарий. Как правило, лучше было бы прочитать о (диалоги) [http://developer.android.com/guide/topics/ui/dialogs.html] и DialogFargment, как было предложено thepoosh. – Krauxe

0

Вы должны создать экземпляр кнопки DialogBox в вашей деятельности и добавить событие прослушивателя это и разместить код внутри этого слушателя

0

вы можете попробовать использовать радиопередачу, кроме слушателя, осуществлять трансляцию в деятельности и отправить его из класса здесь хорошо example

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