如何通过在片段中使用SharedPreferences来保存数据

时间:2017-09-05 09:33:42

标签: java android android-fragments fragment android-sharedpreferences

  1. 我遇到永久保存数据的问题。它应该很简单,我将数据发送到另一个片段并且它完美地工作,但是,我不知道如何保存数据。
    我尝试了一些东西,但我想知道你是否可以帮助我。
  2. 在我的代码中,我通过按下按钮将数据发送到另一个片段。

    1. 所以这是代码:

      package com.example.mskydraw.notetech;

      import android.content.Context;
      import android.content.SharedPreferences;
      import android.os.Bundle;
      import android.support.v4.app.Fragment;
      import android.support.v4.app.FragmentManager;
      import android.view.LayoutInflater;
      import android.view.View;
      import android.view.ViewGroup;
      import android.widget.Button;
      import android.widget.EditText;
      import android.widget.Gallery;
      import android.widget.TextView;
      import android.widget.Toast;
      
      import java.io.FileOutputStream;
      
      import static android.content.Context.MODE_PRIVATE;
      
    2. / **  *一个简单的{@link Fragment}子类。  * / 公共课Cofo扩展片段{

      final static String SHARED_NAME_STRING="sharedp";
      final static String USER_NAME_STRING="user";
      
      
      
      
      public Cofo() {
          // Required empty public constructor
      }
      
      EditText newTxt;
      Button newBtn;
      SharedPreferences sharedPreferences;
      Context c = getActivity();
      
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                               Bundle savedInstanceState) {
          // Inflate the layout for this fragment
          View view = inflater.inflate(R.layout.fragment_cofo, container, false);
          // finding my bouton and text on layout
          newTxt = (EditText)view.findViewById(R.id.Txt);
          newBtn = (Button)view.findViewById(R.id.Btn);
      
      
      
          sharedPreferences=this.c.getSharedPreferences(SHARED_NAME_STRING,Context.MODE_PRIVATE);
          String userNameString=sharedPreferences.getString(USER_NAME_STRING, "");
      
          newTxt.setText(userNameString);
      
          // whenever I click on the bouton
          newBtn.setOnClickListener(new View.OnClickListener(){
              @Override
              public void onClick(View v){
      
      
                  //This code allows you to jump into another fragment
                  // Call the fragment to where I want to jump
                  Main_content newmain = new Main_content();
      
                  //Here we are going to learn to how to save data
                  String Message = newTxt.getText().toString();
                  String file_name = "Hello_file";
                  // Create an object output string
      
      
                  //here we are sending data to another fragment
                  //You have declare bundle
                  Bundle bundle = new Bundle();
                  // You can use bundle.putxx everything such as String...float..
                  bundle.putInt("N1",5);
                  //calling the fragment I'm going to send the data
                  // and I'm going to send data I saved on bundle.
                  newmain.setArguments(bundle);
                  // The process of declaration fragment
                  FragmentManager manager = getFragmentManager();
                  // Jumping into main content fragment
                  manager.beginTransaction().replace(R.id.fragment,newmain).commit();
      
                  if (newTxt.getText().toString().equals("Hello")){
                      Toast.makeText(Cofo.this.getActivity(), "true", Toast.LENGTH_SHORT).show();
                  }
                  else{
                      Toast.makeText(Cofo.this.getActivity(), "Hi", Toast.LENGTH_SHORT).show();
                  }
      
                  SharedPreferences.Editor editor=sharedPreferences.edit();
      
      
      
              }
          });
      
          return view;
      }
      
      }
      

1 个答案:

答案 0 :(得分:0)

如果您想使用共享首选项而不是通过包发送数据,请使用以下代码:

    String stringToSave = "Save me!";

    // To save data to SP
    SharedPreferences.Editor editor = getContext().getSharedPreferences(SHARED_NAME_STRING, MODE_PRIVATE).edit();
    editor.putString(USER_NAME_STRING, stringToSave);
    editor.apply();

    // To load the data at a later time
    SharedPreferences prefs = getContext().getSharedPreferences(SHARED_NAME_STRING, MODE_PRIVATE);
    String loadedString = prefs.getString(USER_NAME_STRING, null);

此代码设置为使用片段。如果您使用的是Activity,请在 getSharedPreferences()前删除 getContext()