如何通过在片段中使用SharedPreferences保存数据 [英] How to save data by using SharedPreferences in a Fragment

查看:98
本文介绍了如何通过在片段中使用SharedPreferences保存数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  1. 我在永久保存数据时遇到问题.它应该很简单,我正在将数据发送到另一个Fragment,并且它工作正常,但是,我不知道如何保存数据.
    我尝试了一些东西,但我想知道您是否可以帮助我.
  1. I'm having a problem with saving data permanently. It should be simple, I'm sending data to another Fragment and it works perfectly, however, I have no idea how to save data.
    I tried something, but I was wondering if you could help me out.

在我的代码中,我通过按一个按钮将数据发送到另一个Fragment.

In my code, I'm sending a data to another Fragment by pushing a Button.

  1. 所以这是代码:

  1. So this is the code:

打包com.example.mskydraw.notetech;

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;

/** *一个简单的{@link Fragment}子类. */ 公共类Cofo扩展Fragment {

/** * A simple {@link Fragment} subclass. */ public class Cofo extends Fragment {

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;
}

}

推荐答案

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

If you want to use Shared Preferences instead of sending the data through bundles, use this code:

    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().

This code is setup to work with fragments. If you use an Activity instead, remove getContext() in front of getSharedPreferences().

这篇关于如何通过在片段中使用SharedPreferences保存数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆