簡體   English   中英

從其他活動調用對話方法

[英]call method of dialog from other activity

我有問題,我不能從另一個活動調用對話框方法,對話框獲取用戶輸入到共享預防在這里我想要檢查如果不存在共享首選項的我的活動我想要對話框似乎得到用戶輸入,並在我點擊確定后繼續在這里繼續運行主要活動

public class main extends Activity {


private Button button;
private EditText CardNumber;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    checkid();



        }
    });
}
public void checkid(){
 File f = new File(
            "/data/data/com.example.ahmed_samir.enjaz/shared_prefs/MyPrefs.xml");
if (f.exists())
    Toast.makeText(OpreatorMobily.this, "exist:", Toast.LENGTH_LONG).show();
else {


  NationalId na= new NationalId();
    na.dialogmethod();

}

}
}

這是我的第二次對話活動

public class NationalId extends Activity {

public static final String MyPREFERENCES = "MyPrefs";
public static final String Name = "nameKey";
SharedPreferences sharedpreferences;

final Context context = this;
private Button button;
private TextView result;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_national_id);
    dialogmethod();
    // components from main.xml
    button = (Button) findViewById(R.id.button1);
    result = (TextView) findViewById(R.id.tv1);
    sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

    // add button listener
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            dialogmethod();


        }

    });

}


public   void  dialogmethod(){
    LayoutInflater li = LayoutInflater.from(context);
    View promptsView = li.inflate(R.layout.prompts, null);

    android.app.AlertDialog.Builder alertDialogBuilder = new android.app.AlertDialog.Builder(
            context);

    // set prompts.xml to alertdialog builder
    alertDialogBuilder.setView(promptsView);

    final EditText userInput = (EditText) promptsView
            .findViewById(R.id.editTextDialogUserInput);

    alertDialogBuilder
            .setCancelable(false)
            .setPositiveButton("OK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            String n = userInput.getText().toString();
                            SharedPreferences.Editor editor = sharedpreferences.edit();
                            editor.putString(Name, n);
                            editor.commit();
                            // edit text
                            result.setText(userInput.getText());

                            Toast.makeText(NationalId.this, "saved:" + n, Toast.LENGTH_LONG).show();



                        }
                    })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });

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

    // show it
    alertDialog.show();

}

}

你不應該這樣做。 一種可能的解決方案是創建一個單獨的類,其中包含對話框的靜態方法。

所以在你的活動中你可以這樣稱呼它:

Dialog myDialog = CustomDialog.createDialog(this); 
myDialog.show();

在靜態方法內:

public static Dialog createDialog(Context context) {
    Dialog dialog = new Dialog(this);
    //do all the initialization stuff

    //return the dialog
    return dialog;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM