2013-10-18 69 views
0

嗨,我正在第一次使用對話框工作。 我想創建一個對話框,在列表視圖中的項目被點擊後:在onClick事件後創建對話框

String[] listItems = {"Colour", "Font Size",}; 
    ListView lv = (ListView) findViewById(R.id.settings_list); 

    lv.setAdapter(new ArrayAdapter<String> 
    (this, android.R.layout.simple_list_item_1, listItems)); 

    lv.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView<?> parent, View 
       view, int position, long id) 
     { 
      String[] listItems = {"Colour", "Font Size",}; 
      if(listItems[position].equals("Font Size")) 
      { 


        public dialog onCreateDialog(Bundle savedInstanceState) 
        { 
         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
         builder.setTitle("Choose Font Size"); 
        } 



      } 

     } 
    }); 

我會在onCreateDialog(捆綁savedInstanceState) 的Eclipse想要一個錯誤;圍繞Bundle savedInstanceState,但developer.android說不然。 任何提示?

回答

2

調用此方法我n您的onItemClick方法:

public void showMyCustomDialog(Context context, String title, String message) 
    { 
     final Dialog dialog = new Dialog(context); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     //tell the Dialog to use the customalertdialog.xml as it's layout description 
     dialog.setContentView(R.layout.customalertdialog); 
     TextView titleText = (TextView) dialog.findViewById(R.id.txtTitleAlertDialog); 
     titleText.setText(title); 
     TextView txt = (TextView) dialog.findViewById(R.id.txtAlertDialog); 
     txt.setText(message); 
     Button dialogButton = (Button) dialog.findViewById(R.id.buttonAlertDialogCancel); 
     dialogButton.setText("OK"); 
     dialogButton.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 
     dialog.show(); 
    } 

類似下面:

lv.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView<?> parent, View 
       view, int position, long id) 
     { 
      String[] listItems = {"Colour", "Font Size",}; 
      if(listItems[position].equals("Font Size")) 
      { 
        public dialog onCreateDialog(Bundle savedInstanceState) 
        { 
         showMyCustomDialog(Context context, String title, String message) // pass title, message and activity context in this method. 
        } 
      } 
     } 
    }); 

希望這將有助於。

0

移動

public dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setTitle("Choose Font Size"); 
} 

INT類範圍,並從onItemClick

+0

這聽起來很有趣,但我怎麼會在onItemClick中調用它? – mind

+0

onCreateDialog(null);例如? – Blackbelt

0

調用它只是使用

public void onItemClick(AdapterView<?> parent, View 
      view, int position, long id) 
    { 
     String[] listItems = {"Colour", "Font Size",}; 
     if(listItems[position].equals("Font Size")) 
     { 


        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
        builder.setTitle("Choose Font Size").show(); 


     } 

    } 
+0

然後我得到一個錯誤,getActivity()未定義類型new AdapterView.OnItemClickListener(){} – mind

0

試試這個

String[] listItems = {"Colour", "Font Size",}; 
ListView lv = (ListView) findViewById(R.id.settings_list); 

lv.setAdapter(new ArrayAdapter<String> 
(this, android.R.layout.simple_list_item_1, listItems)); 

lv.setOnItemClickListener(new OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> parent, View 
      view, int position, long id) 
    { 
     String[] listItems = {"Colour", "Font Size",}; 
     if(listItems[position].equals("Font Size")) 
     { 


      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      getApplicationContext()); 

      // set title 
      alertDialogBuilder.setTitle("Choose Font Size"); 

      //create alert dialog 
      AlertDialog alertDialog = alertDialogBuilder.create(); 

      // show it 
      alertDialog.show(); 

     } 

    } 
});