2017-02-26 45 views
1

我有問題,我不能從另一個活動調用對話方法,對話獲取用戶輸入到sharedprefrnces 在這裏我的活動,我想檢查如果存儲sharedprefernce,如果不存在我希望對話框出現獲取用戶輸入後,我點擊確定其繼續運行的主要活動 這裏的對話框來自其他活動的對話的調用方法

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(); 

} 

} 
+0

'新NationalId();'...'從來沒有一個new'活動 –

回答

0

主要

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(); 

} 

} 
} 

,在這裏我的第二個活動你不應該 做這個。一個可能的解決方案是創建一個單獨的類,其中包含對話框的靜態方法。

所以在你的活動,你可以這樣調用:

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; 
} 
相關問題