1

そのため、メニュー項目から、ユーザーがテキストを入力できるダイアログを表示したいと考えています。ダイアログは正常に機能しますが、EditText オブジェクトで何かをしようとすると、アプリがシャットダウンします。私が使用しているダイアログのレイアウトと関係があるかもしれませんが、よくわかりません。以下は、対応するメニュー項目を押したときに呼び出されるメソッドです。

private void showChangeDownloadURLDialog() {
    mapShouldRefresh = false;

    // Get the layout inflater
    LayoutInflater inflater = MapsActivity.this.getLayoutInflater();

    final EditText mEditText = (EditText) findViewById(R.id.urladdress);

    new AlertDialog.Builder(MapsActivity.this)
    .setTitle(R.string.map_menu_test)
    .setView(inflater.inflate(R.layout.change_url, null))
    .setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            Log.i(TAG, "click ok");
            String mString = mEditText.getEditableText().toString();
            Log.i(TAG, "New URL is: " + mString);
        }
    })
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // Does nothing
        }
    })
    .create()
    .show();
}

どんな助けでも感謝します、ありがとう!

4

3 に答える 3

3

正しいコードは次のようになります。

LayoutInflater inflater = MapsActivity.this.getLayoutInflater();
View content = inflater.inflate(R.layout.change_url, null);
final EditText mEditText = (EditText) content.findViewById(R.id.urladdress);
new AlertDialog.Builder(MapsActivity.this)
    .setTitle(R.string.map_menu_test)
    .setView(content)
//....
于 2013-04-11T04:16:04.160 に答える
0

これを試して、

private void showChangeDownloadURLDialog() {
mapShouldRefresh = false;

// Get the layout inflater
LayoutInflater inflater = MapsActivity.this.getLayoutInflater();

final EditText mEditText = new EditText(MapsActivity.this);

new AlertDialog.Builder(MapsActivity.this)
.setTitle(R.string.map_menu_test)
.setView(mEditText)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        Log.i(TAG, "click ok");
        String mString = mEditText.getEditableText().toString();
        Log.i(TAG, "New URL is: " + mString);
    }
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // Does nothing
    }
})
.create()
.show();

}

于 2013-04-11T04:18:47.967 に答える
0

これを仮定すると

final EditText mEditText = (EditText) findViewById(R.id.urladdress);

にある

R.layout.change_url

下に移動します

.setView(inflater.inflate(R.layout.change_url, null))

( ) が膨らむView前にを代入しようとしていますViewGrouplayout

于 2013-04-11T04:20:54.313 に答える