2

フラグメントで構成される Android アプリを開発しています。これについて言及developer.android.comします。小型デバイスの場合、myfragment_container.xmlファイルは対応するファイルに置き換えられfragment.xmlます。

作成された新しいフラグメントは、いくつかの編集テキスト ボックスと日付ピッカーなどで構成されています。画面の向きの変更中に編集テキストボックスに入力されたデータを何とか保存できます。
ただし、日付ピッカーとリストのテキストは自動的にリセットされます。

また、ユーザーが再び同じフラグメントに戻った場合に、入力したすべてのデータを保持する必要があるように、フラグメントのコンテンツを保存したいと考えています。

私はアンドロイドが初めてで、かなり長い間この問題に悩まされてきました。できるだけ早くこれを手伝ってください。

参考までにコードを貼っておきます。

これは私のMainActivity.javaクラス ファイルです

        ContentFragment newFragment = new ContentFragment();
        Bundle args = new Bundle();
        // Log.d("Inside OnCOntentSelected", String.valueOf(position));
        args.putInt(ContentFragment.ARG_POSITION, position);
        newFragment.setArguments(args);
        FragmentTransaction transaction = getSupportFragmentManager()
                .beginTransaction();

        // Replace whatever is in the fragment_container view with this
        // fragment,
        // and add the transaction to the back stack so the user can
        // navigate back
        transaction.replace(R.id.fragment_container, newFragment);
        transaction.addToBackStack(null);

        // Commit the transaction
        transaction.commit();

これは私のContentFragment.javaコードです

       import android.os.Bundle;
       import android.support.v4.app.Fragment;
       import android.view.LayoutInflater;
       import android.view.View;
       import android.view.ViewGroup;
       import android.widget.ArrayAdapter;
       import android.widget.Spinner;

public class ContentFragment extends Fragment {

public static final String ARG_POSITION = "position";
int mCurrentPosition = -1;

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

    // If activity recreated (such as from screen rotate), restore
    // the previous article selection set by onSaveInstanceState().
    // This is primarily necessary when in the two-pane layout.
    if (savedInstanceState != null) {
        mCurrentPosition = savedInstanceState.getInt(ARG_POSITION);

    }

    // Inflate the layout for this fragment
    return inflater
            .inflate(R.layout.personal_information, container, false);
}

@Override
public void onStart() {
    super.onStart();

    // During startup, check if there are arguments passed to the fragment.
    // onStart is a good place to do this because the layout has already
    // been
    // applied to the fragment at this point so we can safely call the
    // method
    // below that sets the article text.
    // Log.d("Inside OnStart", "Inside OnStart");
    // Log.d("mCurrentPosition OnStart", String.valueOf(mCurrentPosition));
    Bundle args = getArguments();
    if (args != null) {
        // Set article based on argument passed in
        updateContentView(args.getInt(ARG_POSITION));
    } else if (mCurrentPosition != -1) {
        // Set article based on saved instance state defined during
        // onCreateView
        updateContentView(mCurrentPosition);
    }



}

public void updateContentView(int position) {


    mCurrentPosition = position;
    // if (mCurrentPosition == 0) {
    Spinner spinner = (Spinner) getActivity().findViewById(
            R.id.spinnerZodiac);
    // Create an ArrayAdapter using the string array and a default
    // spinner layout
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this.getActivity(), R.array.zodiac_signs,
            android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    spinner.setAdapter(adapter);

    Spinner spinner1 = (Spinner) getActivity().findViewById(
            R.id.spinnerGender);
    // Create an ArrayAdapter using the string array and a default
    // spinner layout
    ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
            this.getActivity(), R.array.gender,
            android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    spinner1.setAdapter(adapter1);
    // }

}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    outState.putInt(ARG_POSITION, mCurrentPosition);

    }
  }
4

0 に答える 0