2013-04-12 19 views
8

tıkladıktan sonra işlemi çalıştırmak için nasıl Android belgelerinden bunu kaynaklanan aşağıdaki DialogFragment yarattı DialogFragment açılmalı ve DialogFragment'in pozitif düğmesine bastıktan sonra ListFragment'in seçili satırını kaldırabilmek ve aynı zamanda kaldırma işlemiyle ilişkili bir uzak eylemi gerçekleştirecek yöntemi çağırmak için listenin bir satırı tıklanır. Bilmiyorum neDialogFragment pozitif düğmesi

public static class ListFragment extends android.support.v4.app.ListFragment { 



     ArrayList<String> listItems=new ArrayList<String>(); 


     ArrayAdapter<String> adapter; 


     public static final String ARG_SECTION_NUMBER = "section_number"; 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      final View rootView = inflater.inflate(R.layout.list_fragment_view, 
        container, false); 


      ListView lv = (ListView)rootView.findViewById(android.R.id.list); 

      }}); 
      adapter=new ArrayAdapter<String>(this.getActivity(), 
        android.R.layout.simple_list_item_1, 
        listItems); 
       setListAdapter(adapter); 
      return rootView; 
     } 



     @Override 
     public void onListItemClick(ListView l, View v, int position, long id) { 



      //opening the dialogfragment 


     } 


    } 




    } 

DialogFragment olumlu düğmeyi tıklamak sonra harekete nasıl kontrol edileceğidir şu şekildedir: Ben ListFragment uyguladı. Bana yardımcı olabilir misiniz?

DÜZENLEME: açıklığa kavuşturmak, iş akışı budur: listeye tıklayın -> DialogFragment öğesini göster> - DialogFragment öğesini tıklatın ve öğeyi listeden kaldırın.

cevap

1

bunu kullanabilirsiniz diyalog aramak için: PayBillDialogFragment den ListFragment çağırmak için iki seçenek var

setPositiveButton("Paga", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     //Add your code here that should execute 
     //when positive button is clicked 
    } 
}); 
+0

Anlamıyorum. Arraylist/arrayadapter öğelerini onClick yönteminden nasıl kaldırabilirim? – Raffo

2

sizin dialogFragment olarak

android.support.v4.app.FragmentManager fm = getSupportFragmentManager(); 
if (fm.findFragmentByTag("PayBillDialogFragment") == null) { 
    PayBillDialogFragment payBillDialogFragment = new PayBillDialogFragment(); 
    payBillDialogFragment.show(fm, "PayBillDialogFragment"); 
} 

. Birincisi, Android yönergelerine göre önerilmektedir. Birincisi,

İlk biridir. Tüm iletişim, Activity adresinde barındırılıyor. Activity'un ((HostingActivity)PayBillDialogFragment.getActivity()).deleteItem() numarasını PayBillDialogFragment.setPositiveButton(onClick()) içine çağırarak bu şekilde alabilirsiniz. HostingActivity.deleteItem()'da şişirilmiş PayBillDialogFragment'u bulun ve içinde bazı silme yöntemlerini çağırın.

http://developer.android.com/guide/components/fragments.html#EventCallbacks

İkinci bakınız. DialogFragment nesnesini oluştururken sadece DialogFragment.setTargetFragment() yapabilir ve PayBillDialogFragment.setPositiveButton(onClick())'un içinde 'u DialogFragment.getTargetFragment()'dan alabilirsiniz ve silme yöntemini buradan arayın.

Bu fragmanı ve iletişim fragmanı arasındaki iletişimi idare nasıl Callback to a Fragment from a DialogFragment

11

bakınız

Örnek fragmanı:

public class MainFragment extends Fragment { 

    private static final int REQ_CODE = 1; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.main_fragment, container, false); 
     Button b = (Button) v.findViewById(R.id.button); 
     b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       MyDialog dialog = new MyDialog(); 
       dialog.setTargetFragment(MainFragment.this, REQ_CODE); 
       dialog.show(getFragmentManager(), "dialog"); 
      } 
     }); 
     return v; 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Toast.makeText(getActivity(), "Result: " + resultCode, 
       Toast.LENGTH_SHORT).show(); 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

} 

Örnek DialogFragment:

public class MyDialog extends DialogFragment { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setMessage("My dialog message") 
       .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         notifyToTarget(Activity.RESULT_OK); 
        } 
       }) 
       .setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           notifyToTarget(Activity.RESULT_CANCELED); 
          } 
         }); 
     return builder.create(); 
    } 

    private void notifyToTarget(int code) { 
     Fragment targetFragment = getTargetFragment(); 
     if (targetFragment != null) { 
      targetFragment.onActivityResult(getTargetRequestCode(), code, null); 
     } 
    } 

} 

Bu yalnızca bir yöntemdir Değişirken de çalışıyorum oryantasyon.

+0

Bana bunu gösterdiğin için teşekkür ederim. yararlı oldu. – j2emanue

0

Liste Parçası, öğeleri göstermek için bir Bağdaştırıcı kullanıyor olabilir. Adaptör bazı Koleksiyon şeklinde girdi gerektirir. Yani, ne yapabileceğiniz, kullanıcı iletişim kutusundaki tamam düğmeyi seçtiğinde ve bunu Liste Fragmanı'na geri döndürdüğünüzde, söz konusu öğeyi Koleksiyon'dan kaldırabilir ve yeniden Parça Listesi Bağdaştırıcısını değiştirilmiş koleksiyonla ayarlayabilirsiniz.