2013-09-24 66 views
1

我有一个对话框窗口,它必须有容器和两个点击侦听器来关闭对话框 我希望我只显示一次,而我使用这段代码但它根本不显示它!只显示一次对话框

有帮助吗?

SharedPreferences setting = getSharedPreferences("dialogprefs", 0); 
    final SharedPreferences.Editor editor = setting.edit(); 
    { 
      final Dialog dialog = new Dialog(this); 
      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
      dialog.setContentView(R.layout.hint1); 
      dialog.setCanceledOnTouchOutside(true); 
      dialog.setTitle("Hint"); 
      View masterView = dialog.findViewById(R.id.LinearLayout1); 
      masterView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        dialog.dismiss(); 
        editor.putString("dialogshow", "0".toString()); 
        editor.commit(); 
       } 
      }); 
       View masterView1 = dialog.findViewById(R.id.imageView1); 
       masterView1.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         dialog.dismiss(); 
         editor.putString("dialogshow", "0".toString()); 
         editor.commit(); 
        } 
      }); 
      if (setting.getString("dialogshow" , "0").equals("0")) { 
       dialog.dismiss(); 
      } 
      else { 
      dialog.show(); 
      } 
    } 
+0

你有没有试过调试你的应用程序? – Tobrun

+0

为什么你使用字符串,它的混淆..为什么你不保存布尔值,这将有意义,在它显示之前是假的,真正的后?/ –

+0

谢谢!但我的问题是设置一个空的sharedprfs – Mahfa

回答

0

假设setting.getString("dialogShow", "0")意味着像getString(name, defaultValue),则默认为"0"如果偏好已尚未设置,这意味着该对话框将永远不会被显示即使一次。也许你的意思是setting.getString("dialogShow", "1")