2014-11-05 98 views
0

我在android应用上工作。我现在有一个应用程序有2 button为“用户信息”和“收费”,当点击每个按钮必须显示自己dialog关联。对话框的内容是之前设计的2个布局,并且设置为contentView。我的问题是通过单击每个按钮只显示dialog_user_info。而点击btnCharge时,实际上必须显示layout_sharzh,点击btnUserInfo时显示layout_user_info。如何解决?当点击`btnCharge`时显示layout_sharzh,点击`btnUserInfo`时显示layout_user_info(对话框)

这里是我的代码:

btnCharge.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       showDialog(dialog_charge,null); 
      } 
     }); 
     btnUserInfo.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        showDialog(dialog_user_info,null); 
       } 
      }); 

(另外我以后 public class MainActivity extends Activity写道final int dialog_charge=1 , dialog_user_info=2;private Dialog dialog=null;,对活动的顶部),这是onCreateDialog方法:

protected Dialog onCreateDialog(int id) 
     {  

     switch(id) 
     {   
     case dialog_charge :  
     dialog=new Dialog(this); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

     LayoutInflater inflater = LayoutInflater.from(this); 
     View dialogview = inflater.inflate(R.layout.layout_sharzh, null); 
     // now pass dialogview to setView of Dialog 
     dialog.setContentView(dialogview); 
     btnSave=(Button)dialogview.findViewById(R.id.btnSave); 
     btnReturn=(Button)dialogview.findViewById(R.id.btnReturn); 
     btnReturn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       dialog.cancel(); 

      } 
     }); 
     btnSave.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       Toast.makeText(MainActivity.this,"success",Toast.LENGTH_SHORT).show(); 

      } 
     }); 

     case dialog_user_info: 
      dialog=new Dialog(this); 
      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      LayoutInflater inflater1 = LayoutInflater.from(this); 
      dialogview = inflater1.inflate(R.layout.layout_user_info, null); 
      // now pass dialogview to setView of Dialog 
      dialog.setContentView(dialogview); 
      dialog.setCanceledOnTouchOutside(true); 

     } 
     return dialog; 
    } 
+0

的可能重复[为什么我们需要case语句后打破?](http://stackoverflow.com/questions/2710300/why-这样做,我们-需要,盈亏后的病例报告) – 2014-12-09 17:34:48

回答

0

我现在发现我的solution.i必须在每个Case声明末尾添加Break;。 保护对话框onCreateDialog(INT ID){

switch(id) 
    {   
    case dialog_charge :  
    dialog=new Dialog(this); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    LayoutInflater inflater = LayoutInflater.from(this); 
    View dialogview = inflater.inflate(R.layout.layout_sharzh, null); 
    // now pass dialogview to setView of Dialog 
    dialog.setContentView(dialogview); 
    btnSave=(Button)dialogview.findViewById(R.id.btnSave); 
    btnReturn=(Button)dialogview.findViewById(R.id.btnReturn); 
    btnReturn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      dialog.cancel(); 

     } 
    }); 
    btnSave.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      Toast.makeText(MainActivity.this,"success",Toast.LENGTH_SHORT).show(); 

     } 
    }); 
    break; 

    case dialog_user_info: 
     dialog=new Dialog(this); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     LayoutInflater inflater1 = LayoutInflater.from(this); 
     dialogview = inflater1.inflate(R.layout.layout_user_info, null); 
     // now pass dialogview to setView of Dialog 
     dialog.setContentView(dialogview); 
     dialog.setCanceledOnTouchOutside(true); 
     break; 

    } 
    return dialog; 

}