1

このセクションでアプリ/コードがクラッシュする理由がわかりません。どんな助けでも大歓迎です。問題は、else if ステートメントでの AlertDialog の作成にあると思います。

基本的に、このメソッドはアプリケーションの初回起動時に呼び出され、OCPS とその他の 2 つのオプションから選択するようユーザーに求めます。OCPS を選択すると、SharedPreference が設定されます。その他を選択すると、テキスト ボックス付きの AlertDialog がポップアップ表示され、ユーザーが独自のローカル URL を入力できるようになり、それが SharedPreference に保存されます。

完全なコードはこちらから入手できます: https://github.com/danielblakes/progressbook/

コードは次のとおりです。

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    boolean firstrun = getSharedPreferences(
            "com.danielblakes.progressbook", MODE_PRIVATE).getBoolean(
            "firstrun", true);
    if (firstrun) {
        new AlertDialog.Builder(this).setTitle("First Run").show();
        pickDistrict(this);
        getSharedPreferences("com.danielblakes.progressbook", MODE_PRIVATE)
                .edit().putBoolean("firstrun", false).commit();
    }

    else {
        String saved_district = getSharedPreferences(
                "com.danielblakes.progressbook", MODE_PRIVATE).getString(
                "district", null);
        startupWebView(saved_district);
    }
}

public Dialog pickDistrict(final Context context) {
    AlertDialog.Builder districtalert = new AlertDialog.Builder(context);
    districtalert
            .setTitle(R.string.choose_district)
            .setItems(R.array.districts,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int i) {
                            if (i == 0) {
                                String district_site = "https://parentaccess.ocps.net/General/District.aspx?From=Global";
                                startupWebView(district_site);
                                getSharedPreferences(
                                        "com.danielblakes.progressbook",
                                        MODE_PRIVATE)
                                        .edit()
                                        .putString("district",
                                                district_site).commit();
                            } else if (i == 1) {
                                AlertDialog.Builder customdistrict = new AlertDialog.Builder(context);
                                customdistrict
                                        .setTitle(
                                                R.string.custom_district_title)
                                        .setMessage(
                                                R.string.custom_district_message);
                                final EditText input = new EditText(
                                        getParent());
                                customdistrict.setView(input);
                                customdistrict
                                        .setPositiveButton(
                                                "Ok",
                                                new DialogInterface.OnClickListener() {
                                                    public void onClick(
                                                            DialogInterface dialog,
                                                            int which) {
                                                        String custom_url = input
                                                                .getText()
                                                                .toString();
                                                        getSharedPreferences(
                                                                "com.danielblakes.progressbook",
                                                                MODE_PRIVATE)
                                                                .edit()
                                                                .putString(
                                                                        "district",
                                                                        custom_url)
                                                                .commit();
                                                    }
                                                });
                                customdistrict
                                        .setNegativeButton(
                                                "Cancel",
                                                new DialogInterface.OnClickListener() {
                                                    public void onClick(
                                                            DialogInterface dialog,
                                                            int which) {
                                                        return;
                                                    }
                                                }).show();
                            }
                        }
                    }).show();
    return districtalert.create();
}

}

4

1 に答える 1

1

変化する

AlertDialog.Builder customdistrict = new AlertDialog.Builder(this);  

AlertDialog.Builder customdistrict = new AlertDialog.Builder(context);

また、

final EditText input = new EditText(getParent());

に変更する必要がありました

final EditText input = new EditText(context);
于 2013-03-15T01:41:08.493 に答える