有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取对话框以显示一次

我的应用程序中有一个警报对话框,应用程序一启动就立即启动。我希望我的alertDialog只在活动安装后首次启动时显示,之后我不希望alertDialog再次弹出,除非用户删除应用程序,然后再次安装。我试着寻找如何实现这种方法,并尝试学习编写正确的代码,但我似乎无法正确完成。有人能帮我实现这个方法,绕过这个问题吗

    public class MainActivity extends Activity {


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    boolean initialDialogDisplayed = preferences.getBoolean("InitialDialog", false);
    if (!initialDialogDisplayed) {
        Editor editor = preferences.edit();
        editor.putBoolean("InitialDialog", true);
        editor.commit();


final AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);

        alertDialog.setTitle("Alert");
        alertDialog.setIcon(R.drawable.ic_launcher);
        alertDialog.setMessage("Dialog");

        alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {

            }
         });

        alertDialog.show();
                final EditText et = (EditText) findViewById(R.id.editText1);
                Button getAnswer = (Button) findViewById(R.id.button1);
                getAnswer.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {       
                        if (et.getText().toString().length()==0) {
                            Toast.makeText(getApplicationContext(),"Can't Be Blank!",Toast.LENGTH_LONG).show();             

                        }else{
                            EditText et = (EditText) findViewById(R.id.editText1);
                            String searchTerm = et.getText().toString().trim();         
                            Intent in = new Intent(MainActivity.this, ListView.class);
                            in.putExtra("TAG_SEARCH", searchTerm);
                            startActivity(in);
                        }

                    }
                });
            }
         }


        @Override
        protected void onStop() {
            // TODO Auto-generated method stub
            super.onStop();
        }}

共 (2) 个答案

  1. # 1 楼答案

    您可以使用共享首选项来存储对话框已经显示的事实。您应该在对话框的显示屏上保存一个值,并读取它以检查是否需要再次显示

        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        boolean initialDialogDisplayed = preferences.getBoolean("InitialDialog", false);
        if (!initialDialogDisplayed) {
            Editor editor = preferences.edit();
            editor.putBoolean("InitialDialog", true);
            editor.commit();
    
            // Display the dialog here
        }
    
  2. # 2 楼答案

    可以通过SharedReferences存储标志值

     SharedPreferences settings = getSharedPreferences("pref_name", 0);
     boolean installed = settings.getBoolean("installed", false);
    
    if(!installed){
    
       //showDialog
    
       SharedPreferences.Editor editor = settings.edit();
       editor.putBoolean("installed", true);
       editor.commit();
    
    }
    

    链接:http://developer.android.com/guide/topics/data/data-storage.html#pref