2013-06-02 33 views
6

Bir DialogFragment numaralı veriyi, gösterileceği ArrayAdapter numaralı sayfaya döndürmek için bir arabirim kullanmaya çalışıyorum.Bir DialogFragment'ten bir Bağdaştırıcıya veri döndürme

Benzer bir şey okudum here, ancak veriyi döndürme işlevini DialogFragment içinde nasıl arayacağımı bilmiyorum.

Herkes yardımcı olabilir?

MyDialog.java

public class MyDialog extends DialogFragment { 

    static interface Listener { 
     void returnData(int result); 
    } 

    /* ... */ 

    @Override 
    public void onActivityCreated (Bundle savedInstanceState){ 
     super.onActivityCreated(savedInstanceState);   

     mBtnSubmit.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       // How can I call PCListAdapter.returnData ? 

       dismiss();    
      } 
     }); 
    } 

} 

PCListAdapter.java

public class PCListAdapter extends ArrayAdapter<PC> implements MyDialog.Listener { 

    /* ... */ 

    public void showCommentDialog() { 

     FragmentManager fm = ((Activity)mContext).getFragmentManager(); 
     MyDialog dialog = new MyDialog(); 
     dialog.show(fm, "mydialog"); 
    } 

    @Override 
    public void returnData(int result) { 
    } 
} 

cevap

14

sen (Dinleyiciler kullanarak) Faaliyet ile Fragment iletişim konusunda görüşmelere okudum bağlantı. Bu, Fragman Aktiviteye sıkı sıkıya bağlı olduğu için yapılır. Şimdi sizin durumunuzda, bir Fragmanı başlatmak için Bağdaştırıcı kullandığınız için, muhtemelen bunu yapabilirsiniz. Bu işe yaramazsa

public class PCListAdapter extends ArrayAdapter<PC> implements MyDialog.Listener { 

/* ... */ 

public void showCommentDialog() { 

    FragmentManager fm = ((Activity)mContext).getFragmentManager(); 
    MyDialog dialog = new MyDialog(); 
    dialog.setListener(PCListAdapter.this); 
    dialog.show(fm, "mydialog"); 
} 

@Override 
public void returnData(int result) { 
} 
} 
+0

public class MyDialog extends DialogFragment { private Listener mListener; public void setListener(Listener listener) { mListener = listener; } static interface Listener { void returnData(int result); } /* ... */ @Override public void onActivityCreated (Bundle savedInstanceState){ super.onActivityCreated(savedInstanceState); mBtnSubmit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mListener != null) { mListener.returnData(data); } dismiss(); } }); } } 

ve Adaptörü için

, çizgi dialog.setListener (bu) geçersiz. – zeeshan

+0

Ben dialog.setListener (this) de hata ile aynı sorun var. Herhangi bir çözüm? –

+0

aslında şimdi çözdüm. Sadece bu satırı doğrudan mBtnSubmit.setOnClickListener içine koymayın. –