0

したがって、以下のコードの目的は、このアクティビティを 1 回起動し、APIKEY を取得して保存し、その APIKEY を使用するメイン アクティビティを起動することです。このアクティビティは単なる EditText ダイアログであり、ユーザーに APIKEY を入力するように促します。一度入力して [OK] ボタンをクリックすると、APIKEY をチェックし、null でないことを確認してから、このアクティビティを再度表示せず、メインこれからの活動。

現在の問題: アクティビティは引き続き起動されますが、単に null であり、EditText ポップアップがなく、メイン アクティビティに対して Intent が起動されることはありません。これを行うためのより良い方法はありますか?

コード

public class Welcome extends Activity {

public static final String PREFS_NAME = "MyPrefsFile";
public EditText editText;
public CheckBox dontShowAgain;
public String value;
public String apikey;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    apikey = settings.getString("apikey", "");
    getapikey();
            launchActivity();
    setContentView(R.layout.splash_screen);
}

private void launchActivity() {
    // TODO Auto-generated method stub
    Intent intent = getIntent();
    intent.setClassName("com.example.test",
            "com.example.test.CardsTesting");
    startActivity(intent);
}

public void getapikey() {
    AlertDialog.Builder adb = new AlertDialog.Builder(this);
    LayoutInflater adbInflater = LayoutInflater.from(this);
    View eulaLayout = adbInflater.inflate(R.layout.custom_dialog, null);
    dontShowAgain = (CheckBox) eulaLayout.findViewById(R.id.checkBox1);
    editText = (EditText) eulaLayout.findViewById(R.id.editText1);
    adb.setView(eulaLayout);
    adb.setTitle("API Key Needed!");
    adb.setMessage("In Order to use this application, You will need a API Key from Enphase Energy. Please input your key below to get started :)");
    adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            String checkBoxResult = "NOT checked";
            String value = editText.getText().toString();
            if (dontShowAgain.isChecked())
                checkBoxResult = "checked";
            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("skipMessage", checkBoxResult);
            editor.putString("apikey", value);
            // Commit the edits!
            editor.commit();

            Intent intent = getIntent();
            intent.setClassName("com.example.test",
                    "com.example.test.CardsTesting");
            startActivity(intent);
            return;
        }
    });

    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    String skipMessage = settings.getString("skipMessage", "NOT checked");
    if (!skipMessage.equals("checked")) {
        // if (skipMessage !=("checked") )
        adb.setIcon(R.drawable.ic_launcher);
        adb.show();
        return;

    }
}
4

1 に答える 1