2012-09-20 82 views

回答

1

我不是很確定它是否符合ListFragment工作或沒有,但我們可以通過在清單文件作爲應用主題活動展示活動的對話框:

<activity android:theme="@android:style/Theme.Dialog" /> 

請與ListFragment嘗試,讓我知道它是否有效。

謝謝。

6

另一種選擇:

構建對話片段:

import android.app.AlertDialog; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.support.v4.app.DialogFragment;  

public class ListDialogFragment extends DialogFragment { 

    private OnListDialogItemSelect listener; 
    private String title; 
    private String[] list; 

    public ListDialogFragment(OnListDialogItemSelect listener, String[] list, String title) { 
     this.listener=listener; 
     this.list=list; 
     this.title=title; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     return new AlertDialog.Builder(getActivity()) 
       .setTitle(title) 
       .setCancelable(false) 
       .setItems(list, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int item) { 

         listener.onListItemSelected(list[item]); 
         getDialog().dismiss(); 
         ListDialogFragment.this.dismiss(); 

        } 
       }).create(); 

    } 

    public interface OnListDialogItemSelect{ 
     public void onListItemSelected(String selection); 
    } 

} 

在您的片段活動是這樣的:

public class YourActivity extends FragmentActivity implements OnListDialogItemSelect{ 

    private void showCountryFragment(){ 
     FragmentManager fm = getSupportFragmentManager(); 
     ListDialogFragment newFragment = new ListDialogFragment(this,getCountries(),"Country:"); 
     newFragment.show(fm, "country_picker"); 
    } 

    @Override 
    public void onListItemSelected(String selection) { 
     _bt_country.setText(selection); 
    } 

} 
+0

這工作,因爲你可以代替常規的使用'DialogFragment'片段......只要你不使用任何對話框片段特定的方法。 –

+0

非常感謝,這真的很有幫助! – Analizer

+0

使用自定義構造函數傳遞值不是建議使用片段的做法。使用setArguments()將值傳遞給Fragments。 – Vasudev