0

ボタンが押されたときに表示される AlertDialog があります。アラート「完了」ボタンが押されたときにユーザーの名前を保存します。次に、ユーザーを別のアクティビティに移動します。私が理解しようとしているのは、AlertDialog を表示するこのレイアウト ボタンを最初に押したときにのみ AlertDialog を表示する方法です。これにより、ユーザーがアプリのこの部分に戻って同じレイアウト ボタンを押すと、AlertDialogは表示されず、ユーザーは自分の名前を再度入力する必要はありません。動作しないコードは次のとおりです。

    public class CloseoutActivity extends Activity {

SharedPreferences prefs2;
String prefs2String="";
boolean firstRun = true;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_closeout);

 // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        // For the main activity, make sure the app icon in the action bar
        // does not behave as a button
        ActionBar actionBar = getActionBar();
        actionBar.setHomeButtonEnabled(false);
    }


}

public void closeoutCashButtonPressed (View closeoutCashButtonPressedView){

if(firstRun){   

     AlertDialog.Builder builder3 = new AlertDialog.Builder(this);
     builder3.setTitle("    Please enter your full name");
     final EditText input3 = new EditText(this);
     input3.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_WORDS|InputType.TYPE_TEXT_VARIATION_PERSON_NAME);
     builder3.setView(input3);
     builder3.setPositiveButton("Done", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            prefs2String = input3.getText().toString();

            prefs2 = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
            SharedPreferences.Editor prefs2Editor = prefs2.edit();
            String userName1 = input3.getText().toString();
            prefs2Editor.putString("userName", userName1);
            prefs2Editor.commit();

            launchIntent1();

        }
    });

    builder3.show();
}

firstRun = false;



}

public void launchIntent1(){

    Intent displayCloseoutCashButtonSignal = new Intent (this, CloseoutCashButtonSignal.class);
    displayCloseoutCashButtonSignal.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(displayCloseoutCashButtonSignal);

このコードを使用すると、アプリのこの部分に戻ったときに AlertDialog がポップアップし続けます。何か案は?ありがとう!

4

1 に答える 1

0

firstRunフラグをSharedPrefsまたは他の永続的なストレージに保存する必要があります。あなたが走るたびにActivityあなたの旗はそうではないでしょうtrue。これが保存している唯一の場所である場合は、名前が存在するかどうかusernameを確認し、SharedPrefs存在する場合は必要に応じて続行できますが、存在しない場合は、名前を追加して表示できます。Dialog

于 2013-03-02T01:56:51.077 に答える