3

アプリを閉じるか停止した後に保存される編集可能なテキストフィールドをフラグメントで作成したいと思います。return notatki;しかし、私はすでにこれを持っていることに沿って何か問題があります:

public class DetailFragment2 extends Fragment {

    private EditText notatki;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e("Test", "hello");


    }     
    @SuppressLint("SimpleDateFormat")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.details2, parent, false);
        notatki = (EditText) view.findViewById(R.id.editText1);
        SharedPreferences settings = this.getActivity().getSharedPreferences("PREFS", 0);
        notatki.setText(settings.getString("value", ""));
        return view;
    }  
    @Override
    public void onStop( ){
        super.onStop();
        if(notatki.getText() != null) {
            SharedPreferences settings = this.getActivity().getSharedPreferences("PREFS", 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("value", notatki.getText().toString());
            editor.commit();
        }
    }
}

editText のコンテンツを保存したかったのに、何も保存されていないときに、アプリを停止するまで動作しますreturn notatki;return view;

4

5 に答える 5

3

への変更

private EditText notatki;
@SuppressLint("SimpleDateFormat")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
        Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.details2, parent, false);
        notatki = (EditText) view.findViewById(R.id.editText1);
        SharedPreferences settings = this.getActivity().getSharedPreferences("PREFS", 0);
        notatki.setText(settings.getString("value", ""));

  return view; // return view here instead of notaki
}   

EditText は既にクラス メンバーとして宣言されています

 private EditText notatki;

で初期化するだけonCreateViewです。

于 2013-11-13T09:12:29.113 に答える
1

変化する

EditText notatki = (EditText) view.findViewById(R.id.editText1);

notatki = (EditText) view.findViewById(R.id.editText1);

で再度宣言するとonCreateView、グローバルなものがシャドウされ、null が取得されるためです。onStop

于 2013-11-13T09:14:47.390 に答える
0

これを試して....

public View onCreateView(LayoutInflater inflater, ViewGroup parent,
        Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.details2, parent, false);
    EditText notatki = (EditText) view.findViewById(R.id.editText1);
    SharedPreferences settings = this.getActivity().getSharedPreferences("PREFS", 0);
    notatki.setText(settings.getString("value", ""));
    return view;
}  
于 2013-11-13T09:15:15.387 に答える
0

あなたはそれを正しくやっていますが、問題はonCreateViewEditText インスタンスではなく、親ビューを返す必要があることですnotatki

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.details2, parent, false);
        ....
        return view;
    }  
于 2013-11-13T09:15:15.493 に答える