活动之间的共享首选项

编程入门 行业动态 更新时间:2024-10-19 02:15:08
本文介绍了活动之间的共享首选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

这个问题有点类似于其他sharedpreferences问题,但是我真的不知道如何在不同活动之间正确使用它?如果可能的话,请提供完整的活动文件,而不是仅仅几行代码,因为我是该领域的菜鸟!

This question is kind of similar to other sharedpreferences questions but i don't really know how exactly to use it between different activities? Kindly provide the complete activity file if possible rather than just few lines of codes as i am noob in this field!

我有两个活动.一个是用户配置文件,另一个是edituserprofile.用户在edituserprofile中所做的任何编辑,都应在用户单击edituserprofile的应用栏中的保存图像按钮后立即显示在userprofile活动中.sharedpreferences在edituserprofile中可以完美地工作,用户可以看到输入的数据,也可以将其更改为edittextview.但是,我无法将相同的逻辑应用于用户配置文件活动.当我单击edituserprofile中的save按钮时,它将带我进入userprofile,我可以看到对edituserprofile所做的更改,但是一旦退出并重新启动它,数据将在userprofile中清除,但不会从edituserprofile中清除!我希望用户配置文件保存,显示来自edituserprofile的数据,甚至用户退出并重新启动该应用程序!

I have two activities. one is userprofile and another is edituserprofile. Whatever a user edits in edituserprofile, should be displayed in userprofile activity as soon as user click on save image button from the app bar of edituserprofile. sharedpreferences works perfectly in edituserprofile where user can see entered data and also able to change it as it is edittextview. However, i am not able to apply the same logic to userprofile activity. When i click on save button from edituserprofile, it takes me to userprofile and i can see the change that has made in edituserprofile but as soon as i exit the userprofile and relaunch it, data gets cleared in userprofile but not from edituserprofile! i want userprofile to save, display data from edituserprofile even user exit and re-launch the app!

下面是用户个人资料活动!

Below is userprofile activity!

package com.example.android.coffeeshop6menus; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class UserProfile extends AppCompatActivity { public static final int Edit_Profile = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_profile); Toolbar userProfileToolbar = (Toolbar) findViewById(R.id.my_toolbar); setSupportActionBar(userProfileToolbar); SharedPreferences sharedpreferences = getPreferences(MODE_PRIVATE); displayMessage(sharedpreferences.getString("nameKey", "")); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.userprofile_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_editProfile: Intent userProfileIntent = new Intent(UserProfile.this, EditUserProfile.class); startActivityForResult(userProfileIntent, Edit_Profile); } return true; } // Call Back method to get the Message form other Activity @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case Edit_Profile: if (resultCode == RESULT_OK) { String name = data.getStringExtra(""); displayMessage(name); } break; } } public void displayMessage(String message) { TextView usernameTextView = (TextView) findViewById(R.id.importProfile); usernameTextView.setText(message); } }

下面是可完美运行的edituserprofile活动!

Below is edituserprofile activity that works perfect!

package com.example.android.coffeeshop6menus; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class EditUserProfile extends AppCompatActivity { private CoordinatorLayout coordinatorLayout; public static final String Name = "nameKey"; SharedPreferences sharedpreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_user_profile); Toolbar userProfileToolbar = (Toolbar) findViewById(R.id.my_toolbar); setSupportActionBar(userProfileToolbar); TextView usernameTextView = (TextView) findViewById(R.id.username); sharedpreferences = getSharedPreferences(Name, Context.MODE_PRIVATE); if (sharedpreferences.contains(Name)) { usernameTextView.setText(sharedpreferences.getString(Name, "")); } coordinatorLayout = (CoordinatorLayout) findViewById(R.id .coordinatorLayout); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.editprofile_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_save: TextView usernameTextView = (TextView) findViewById(R.id.username); String usernameString = usernameTextView.getText().toString(); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(Name, usernameString); editor.apply(); Snackbar snackbar = Snackbar .make(coordinatorLayout, "Saved!", Snackbar.LENGTH_LONG); snackbar.show(); Intent userProfileIntent = new Intent(EditUserProfile.this, UserProfile.class); userProfileIntent.putExtra("", usernameString); setResult(RESULT_OK, userProfileIntent); finish(); } return true; } }

下面是userprofile.xml文件

Below is the userprofile.xml file

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="schemas.android/apk/res/android" xmlns:app="schemas.android/apk/res-auto" xmlns:tools="schemas.android/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.android.coffeeshop6menus.UserProfile"> <include layout="@layout/toolbar" android:layout_width="match_parent" android:layout_height="match_parent" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:text="Name" android:textSize="20dp" /> <TextView android:id="@+id/importProfile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:text="@string/userNameImport" android:textSize="20dp" /> </LinearLayout> </ScrollView>

下面是edituserprofile xml文件:

Below is the edituserprofile xml file:

<ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.android.coffeeshop6menus.UserProfile"> <include layout="@layout/toolbar" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:text="User Profile" android:textSize="20dp" /> </LinearLayout> <EditText android:id="@+id/username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:cursorVisible="true" android:hint="@string/EditTextHint" android:inputType="textNoSuggestions" /> <EditText android:id="@+id/usercontact" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:cursorVisible="true" android:hint="@string/usercontactHint" android:inputType="textNoSuggestions" /> <EditText android:id="@+id/useremail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:cursorVisible="true" android:hint="@string/useremailHint" android:inputType="textEmailAddress" /> </LinearLayout> </ScrollView>

请帮助!

推荐答案

在您的 UserProfile 类中,其他所有地方都会发生变化-

In your UserProfile class and everywhere else change -

SharedPreferences sharedpreferences = getPreferences(MODE_PRIVATE);

SharedPreferences sharedpreferences = getPreferences(MODE_PRIVATE);

由此-

sharedpreferences = getSharedPreferences("nameKey", Context.MODE_PRIVATE);

你很好走!

更多推荐

活动之间的共享首选项

本文发布于:2023-08-01 12:32:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1268379.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:首选

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!