7

やあ。何が起こっているのかわかりません。EditTextの作成時にのテキストを変更しようとしていますが、 はDialogFragmentテキストをEditText更新していません。電話すると、内容が変わっgetText().length()ていることに気づきます。EditTextしかし、ビジュアルは同じままで、空っぽです。

なんで?

事前に感謝します

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

public class ItemNameDialog extends DialogFragment {
    @Override
    public Dialog onCreateDialog(final Bundle bundle) {
        System.out.println("ON CREATE DIALOG WAS CALLED");   //This appears on LogCat, so this method is called.. the problem is not that

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Configure an item to count:");

        LayoutInflater inflater = getActivity().getLayoutInflater();

        View view = inflater.inflate(R.layout.itempick_layout, null);
        builder.setView(view);

        final CheckBox box = (CheckBox) view.findViewById(R.id.itemSenseCheckBox);
        final EditText itemNameBox = (EditText) view.findViewById(R.id.itemNameText);
        final Spinner spinner = (Spinner) view.findViewById(R.id.itemsDefault);
        final int viewIDClicked = getArguments().getInt(clickableViewID);
        final String actualName = getArguments().getString(actualNameItemView);

        System.out.println("H - before: " + itemNameBox.getText().toString().length());    //it appears on logcat "H - before: 0"
        itemNameBox.setText(actualName);
        System.out.println("H - after: " + itemNameBox.getText().toString().length());   //it appears on logcat "H - before: 3"  so why not changing ?

        return builder.create();
    }
}
4

1 に答える 1

4

私の問題は、そのコードの下で、メソッド onCreateDialog が終了する前に、スピナーを制御するいくつかのメソッドがあったことです。
そのスピナーの最初の項目には「何も選択しない」という目的があり、その項目の選択では、次のようにその編集テキストの内容を消去していました。

@Override
public void onItemSelected(AdapterView<?> parent, View view,
                int pos, long id) {

if(pos == 0){
    if(editText.length() != 0 )
        editText.setText("");
}

そして、スピナーの作成中にイベント「onItemSelected」がトリガーされることを知りませんでした。そのため、スピナーのそのアイテムをクリックしなくても、編集テキストが毎回消去されました

..単純なブール値。メソッド onCreateDialog がブール値を true に設定するたびに、そのブール値が false のときに onItemSelected が動作します。
以下のコードのように:

@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

    if(firstGoingSpinner){
            firstGoingSpinner = false;

        }else{
            if(pos == 0){
                if(editText.length() != 0 )
                    editText.setText("");

            }else{
                editText.setText(""+parent.getItemAtPosition(pos));
                Editable etext = editText.getText();
                Selection.setSelection(etext, editText.length());
            }

        }
    }


これが将来誰かに役立つことを願っています;)

于 2013-03-30T21:00:10.317 に答える