`

Android alertdialog的按钮点击后不消失

 
阅读更多


 private void ShowAppleDialog() {
  AlertDialog.Builder db = new AlertDialog.Builder(this);
  LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  View view = inflater.inflate(R.layout.apple_dialog, null);
  db.setView(view);
  db.setIcon(R.drawable.bg_settings_min);
  db.setTitle(getString(R.string.device_settings));
  
  dialogDeviceName = (EditText)view.findViewById(R.id.dialog_device_name);
  dialogPassword = (EditText)view.findViewById(R.id.dialog_device_pas);
  showPassword = (CheckBox)view.findViewById(R.id.showPassword);
  StatusOn = (RadioButton)view.findViewById(R.id.status_on);
  StatusOff = (RadioButton)view.findViewById(R.id.status_off);
  
  StatusOn.setOnClickListener(this);
     StatusOff.setOnClickListener(this);
  
  SharedPreferences pres = getSharedPreferences(APPLE_DEVICE,Context.MODE_WORLD_READABLE);
  if(pres != null){
   mDeviceName = pres.getString("DEVICE_NAME", Build.MODEL);
   mPassword = pres.getString("PASSWORD", "");
   dialogDeviceName.setText(mDeviceName);
   dialogPassword.setText(mPassword);
   mDeviceStatus = pres.getBoolean("DEVICE_STATUS", true);
   if(mDeviceStatus){
    StatusOn.setChecked(true);
   }else{
    StatusOff.setChecked(true);
   }
  }
  showPassword.setChecked(false);
  showPassword.setOnCheckedChangeListener(new OnCheckedChangeListener() {
   @Override
   public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
        if (showPassword.isChecked())
          dialogPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
               else
                dialogPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
           
   }
  });
  
  db.setPositiveButton(getString(R.string.app_save), new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog,int which) {
    String mName = dialogDeviceName.getText().toString();
    if(mName.length() == 0){
     Toast.makeText(mContext, getString(R.string.device_name_null),Toast.LENGTH_LONG).show();
     //用于不关闭对话框
     try{
      Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
      field.setAccessible(true);
      field.set(dialog, false);
      } catch (Exception e) {
      e.printStackTrace();
     }
    }else{
     SharedPreferences pres = getSharedPreferences(APPLE_DEVICE,Context.MODE_WORLD_READABLE);    
     if(pres != null){
      final Editor ed = pres.edit();
      ed.putString("DEVICE_NAME",dialogDeviceName.getText().toString());
      ed.putString("PASSWORD",dialogPassword.getText().toString());
      ed.putBoolean("DEVICE_STATUS", isDeviceStatus);     
      ed.commit();
      Log.d(TAG, "Success save device info ...");
      mDeviceName = pres.getString("DEVICE_NAME", Build.MODEL);
      mPassword = pres.getString("PASSWORD", "");
      mDeviceStatus = pres.getBoolean("DEVICE_STATUS", true);
         deviceName.setText(mDeviceName);
         if (mDeviceStatus){
       deviceStatus.setText(getString(R.string.device_on));
      }else{
       deviceStatus.setText(getString(R.string.device_off));
      }
//       Intent intent1 = new Intent();
//          intent1.setAction("dapple.intent.action.SETTING_FINISH");
//          intent1.putExtra("player_name", mDeviceName);
//          intent1.putExtra("player_password", mPassword);
//          intent1.putExtra("service", "on");
//          sendBroadcast(intent1);
     }else{
      Log.d(TAG, "device info Failure...");
     }
     //用于关闭对话框

     try {
      Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
      field.setAccessible(true);
      field.set(dialog, true);
      } catch (Exception e) {
      e.printStackTrace();
      }
    }       
   }
  });
  db.setNegativeButton(getString(R.string.app_cancel), new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    //用于关闭对话框

    try {
     Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
     field.setAccessible(true);
     field.set(dialog, true);
     } catch (Exception e) {
     e.printStackTrace();
     }
   }
  });
  AlertDialog d = db.create();
  d.setInverseBackgroundForced(true);
  d.show();
 }

0
0
分享到:
评论

相关推荐

    Android中AlertDialog 点击按钮后不关闭对话框的功能

    总结起来,要在Android中实现`AlertDialog`点击按钮后不关闭对话框的功能,关键在于延迟设置Positive按钮的点击事件,并在事件处理中控制对话框的关闭。通过这种方式,可以实现更复杂的交互逻辑,如用户输入验证,而...

    AlertDialog点击按钮不消失的实现方法

    本篇文章将详细介绍如何实现在`AlertDialog`中点击按钮但不使其消失的效果。 首先,我们需要理解`AlertDialog`的基本构建过程。通常,我们创建`AlertDialog`会使用`AlertDialog.Builder`,设置标题、内容视图、按钮...

    Android中实现Iphone样式的AlertDialog

    4. **动画效果**:虽然这不是必需的,但为了增强用户体验,可以添加一些进入和退出动画,使`AlertDialog`的展示和消失更加平滑。 5. **自定义主题**:如果你的应用支持Android 5.0(Lollipop)及以上版本,可以使用...

    Android使alertDialog.builder不会点击外面和按返回键消失的方法

    在Android开发中,有时我们需要创建一个对话框(AlertDialog)来显示一些重要信息或进行用户交互,但不希望用户通过点击对话框外部或者按下设备的返回键来轻易地关闭它。在这种情况下,我们可以调整AlertDialog的...

    Android Holo风格的AlertDialog对话框制作实例.rar

    Android 自定义实现一个AlertDialog对话框,提示框或警告框弹出式对话框,套用了系统Holo风格,生成符合系统主题的AlertDialog.Builder,可以分别定义弹出提示的标题文字及提示内容:  builder.setTitle("Test ...

    使用DialogFragment替代AlertDialog

    // 取消按钮点击不执行任何操作 return builder.create(); } } ``` 2. 在需要显示对话框的地方,通过FragmentManager来添加DialogFragment。例如,你可以在某个按钮的点击事件中调用以下代码: ```java ...

    安卓Android源码——alertDialog对话框.zip

    2. **AlertDialog的生命周期**:理解AlertDialog如何创建、显示、消失以及它们与Activity或Fragment的生命周期的关系。 3. **资源管理**:如何加载字符串资源、颜色资源等,以应用到AlertDialog的各个部分。 4. **...

    Android中实现Iphone样式的AlertDialog源码

    然而,Android原生的`AlertDialog`样式与iOS的风格有所不同,后者通常更加精致和统一。因此,开发者可能会寻求自定义`AlertDialog`来模仿iPhone的外观。 要实现iPhone样式的`AlertDialog`,我们需要进行以下几个...

    安卓Android源码——安卓Android中实现Iphone样式的AlertDialog.rar

    "安卓Android源码——安卓Android中实现Iphone样式的AlertDialog.rar"这个压缩包文件提供了一个示例,教你如何在Android应用中模仿iPhone样式的AlertDialog,使得用户界面更加接近iOS的体验。 在Android开发中,...

    警告框AlertDialog的demo

    对于`AlertDialog`上的按钮点击,通常需要设置监听器。`setPositiveButton()`和`setNegativeButton()`方法的第二个参数就是用于设置监听器的,可以是`OnClickListener`或者匿名内部类。 6. **生命周期** `...

    Android修改源码解决Alertdialog触摸对话框边缘消失的问题

    在这个例子中,当出现错误提示对话框时,`setCancelable(false)`确保用户只能通过点击“确认”按钮来关闭对话框,而不会因为误触边缘或按返回键导致对话框消失。 总结来说,要解决Android AlertDialog在触摸边缘时...

    Android应用源码之Android中实现Iphone样式的AlertDialog.zip

    对于可能出现的问题,如按钮点击事件不正确或布局显示异常,需要进行调试和修复。 通过以上步骤,开发者可以创建一个看起来和感觉上都与iOS风格类似的Android AlertDialog。这样的定制不仅可以提高应用的用户体验,...

    Android应用源码之Android中实现Iphone样式的AlertDialog.rar

    在Android开发中,为了提供与iOS应用相似的用户体验,开发者有时会希望在Android应用中实现类似iPhone样式的对话框(AlertDialog)。本资源“Android应用源码之Android中实现Iphone样式的AlertDialog.rar”提供了一...

    Toast Menu Activity ListView AlertDialog

    标题中的"Toast", "Menu", "Activity", "ListView", 和 "AlertDialog" 是Android开发中五个重要的组件或概念,下面将详细解释它们。 1. **Toast**:在Android中,Toast是一种轻量级的通知方式,它会在屏幕底部短暂...

    自定义AlertDialog

    .setNegativeButton("取消", null) // 取消按钮,这里设置为null表示不处理点击事件 .show(); ``` 对于自定义`AlertDialog`,主要涉及以下几个方面: 1. **自定义视图**:你可以通过`setView()`方法传入一个...

    应用源码之alertDialog.zip

    在Android开发中,`AlertDialog`是一个非常常见的组件,它用于显示警告、确认或者询问用户的信息。这个`alertDialog.zip`文件包含的源码是关于如何在Android应用中使用`AlertDialog`进行交互的学习材料。让我们深入...

    android等待对话框(可定时自动关闭)

    耗时操作完成后,我们在主线程中调用`dismiss()`方法关闭对话框,确保操作完成后对话框会正确地消失。 另一种定时关闭的方案是使用Handler和Runnable。这种方式更适合在主线程中处理耗时操作的情况: ```java ...

    Android例子源码安卓实现Iphone样式的AlertDialog.zip

    在Android中,`AlertDialog`是一种用于显示警告或确认消息的对话框,通常包含一个标题、消息文本和一个或多个操作按钮。默认情况下,`AlertDialog`具有Android原生的外观,但通过自定义布局和样式,我们可以改变其...

    精美的对话框 AlertDialog 作者nifty

    4. **按钮样式(Button Style)**:可以自定义按钮的文本、颜色、大小、边框等,甚至可以设置按钮的点击动画。 5. **对话框动画(Animations)**:添加进入和退出的动画效果,使得对话框的出现和消失更加流畅自然。...

    AndroidStudio AlertDialog控件

    点击供应商选择按钮出现对话框,选择供应商后tv控件显示选择的供应商名称,点击确定,对话框消失。 public class MainActivity extends AppCompatActivity { private TextView tvaMainTitle; private Button ...

Global site tag (gtag.js) - Google Analytics