-1

我无法创建共享首选项文件我一直在为此挣扎2天,请帮助,我是新来的。在我的应用程序中,我有不同的屏幕上有15个问题,我想要存储所选选项的文本,以便将来可以使用它。 我的代码我无法创建共享首选项文件

公共类QuestionPagerFragment扩展片段{

protected View mView; 

String pageData[]; //Stores the text to swipe. 
String optionData[];//Stores the option data. 

static int rid; 
RadioGroup group; 
static ArrayList<Integer> list = new ArrayList(); 

SharedPreferences prefs; 
public static final String MyPREFERENCES = "MyPrefs" ; 


@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    mView = inflater.inflate(R.layout.page, container, false); 
    return mView; 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    prefs = getActivity().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 
    pageData=getResources().getStringArray(R.array.desserts); 

    optionData=getResources().getStringArray(R.array.options); 

    group = (RadioGroup)mView.findViewById(R.id.group); 

    group.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // TODO Auto-generated method stub 
      int radioButtonID = group.getCheckedRadioButtonId(); 
      View radioButton = group.findViewById(radioButtonID); 
      rid = group.indexOfChild(radioButton); 
      list.add(getArguments().getInt("pos"), rid); 
      click(); 

     } 
    }); 
    ((TextView)mView.findViewById(R.id.textMessage)).setText(pageData[getArguments().getInt("pos")]); 
    if(getArguments().getInt("pos") == 14) { 
     ((Button)mView.findViewById(R.id.submitbtn)).setVisibility(View.VISIBLE); 
     ((Button)mView.findViewById(R.id.submitbtn)).setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v){ 

       }     
      }); 
    } 

    for(int i = 0; i < group.getChildCount(); i++){ 
     ((RadioButton) group.getChildAt(i)).setText(optionData[(getArguments().getInt("pos")*4)+i]); 
    }  
} 



public static void save() { 
     if(rid==0){ 
      MainActivity.FLAG_A++;     
     } 
     else if(rid==1){ 
      MainActivity.FLAG_B++;  
     } 
     else if(rid==2){ 
      MainActivity.FLAG_C++;  
     } 
     else if(rid==3){ 
      MainActivity.FLAG_D++;  
     }    
} 
public void click(){ 

     SharedPreferences prefs = getActivity().getSharedPreferences("idValue", 0); 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putString("idValue", list.get(getArguments().getInt("pos")).toString()); 
     editor.commit(); 
} 

}

+0

共享prefrence不是一个文件,这是存储文本的方式在内部存储器,如果你想使用它的一些其他活动,那么你可以访问它 – Amitsharma 2015-02-06 13:20:59

+0

与文件,我的意思是我无法找到SP在数据文件夹 – user3699550 2015-02-06 13:25:12

+0

共享prefrence不用于读取数据或从文件中获取数据这是用来存储在内部应用中仅在变量的那一侧进行评估将永远存储,如果你清理它,然后内存将会清除其他内容不会 – Amitsharma 2015-02-06 13:29:42

回答

0

此代码将帮助您存储值

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
Editor editor = pref.edit(); 

//存储数据的键/值对

editor.putBoolean("key_name1", true);   // Saving boolean - true/false 
editor.putInt("key_name2", "int value");  // Saving integer 
editor.putFloat("key_name3", "float value"); // Saving float 
editor.putLong("key_name4", "long value");  // Saving long 
editor.putString("key_name5", "string value"); // Saving string 

// Save the changes in SharedPreferences 
editor.commit(); // commit changes 

//获取SharedPreferences数据

//如果key不存在则返回第二个参数值的方式值 - 在这种情况下,空

pref.getBoolean("key_name1", null);   // getting boolean 
pref.getInt("key_name2", null);    // getting Integer 
pref.getFloat("key_name3", null);   // getting Float 
pref.getLong("key_name4", null);   // getting Long 
pref.getString("key_name5", null);   // getting String 

//从SharedPreferences删除键值

editor.remove("key_name3"); // will delete key key_name3 
editor.remove("key_name4"); // will delete key key_name4 

// Save the changes in SharedPreferences 
editor.commit(); // commit changes 

//清除SharedPreferences中的所有数据

editor.clear(); 
editor.commit(); // commit changes 
+0

做到了这一点帮助你...... – Amitsharma 2015-02-06 13:25:27

+0

链接更多详细信息http://developer.android.com/reference/android/ content/SharedPreferences.html – Amitsharma 2015-02-06 13:27:01

+0

不,这是给getApplicationContext()错误(我正在使用片段) – user3699550 2015-02-06 13:28:34

0

尝试删除此行: SharedPreferences prefs = getActivity()。getSharedPreferences(“idValue”,0);

+0

它赢得了' t帮助定义SharedPreferences偏好再次绝对是涵盖全局变量,你正在本地工作,但这不是一个问题 – 2015-02-06 13:37:22

0

试图改变提交()到申请()是这样的:

public void click(){ 

    SharedPreferences prefs = getActivity().getSharedPreferences("your.project.package.name", 0); // don't use short id because sharedPreferences is a global file 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putString("idValue", list.get(getArguments().getInt("pos")).toString()); 

    editor.apply(); //Here is the change 
} 

阅读您的首选项尝试:

SharedPreferences prefs = this.getSharedPreferences("your.project.package.name", Context.MODE_PRIVATE); 
String idValue= prefs.getString("idValue", null); 
+0

如何在数据/数据/ .. – user3699550 2015-02-06 13:41:07

+0

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME中查看SP文件。xml 但是,只有当你有根深蒂固的手机,我相信你打开它使用私人国防部。尝试阅读它,就像我吞下 – 2015-02-06 13:42:32

+0

是的,我使用的是private_Mode,但没有数据文件夹中的任何内容,但我想这不是保存在文件夹 – user3699550 2015-02-06 13:48:39