gpt4 book ai didi

android - Shared-preferences 仅适用于 Fragment Activity

转载 作者:行者123 更新时间:2023-11-29 21:10:02 27 4
gpt4 key购买 nike

我有这个 fragment Activity ,这是我的主要 Activity ,包括 2 个 fragment Activity 。

    /** SharedPreferences */
public static final String MyPREFERENCES = "MyPrefs";
SharedPreferences sharedpreferences;
int currentOrientation;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.activity_main);

/** Rotation SharedPreferences */
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
int orienation = preferences.getInt("orientation", -1);
if (orienation != -1) {
setRequestedOrientation(orienation);
}
/** End */

mAdapter = new FragmentAdapter(getSupportFragmentManager());

mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);

mIndicator = (TitlePageIndicator) findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);

}

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (outState == null) {
outState = new Bundle();
}
outState.putInt("currentOrientation",
Integer.valueOf(currentOrientation));
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);

currentOrientation = savedInstanceState.getInt("currentOrientation");

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menus, menu);
return true;
}

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {

/** Rotation */
case R.id.menuRotate:
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor editor = preferences.edit();
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
editor.putInt("orientation",
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
editor.putInt("orientation",
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
editor.commit();

break;

}
return false;
}

我在菜单中设置了方向选项。

用户可以从菜单中将方向更改为横向或纵向。

它工作得很好,但问题是其他 Activity 。

我如何从我已经在我的主要 Activity 中声明的共享首选项中读取

我想要的是我的应用程序中的所有 Activity 都与用户从菜单中选择的方向相同。

这是我的其他 Activity 之一:

public class MainList extends Activity {

LinearLayout b1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_list);
b1 = (LinearLayout) findViewById(R.id.list_a);
b1.setOnClickListener(mb1);

}

View.OnClickListener mb1 = new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(MainList.this, List_1.class));
}
};

提前致谢:)

最佳答案

因此,在每一个中你都应该使用相同的上下文而不仅仅是“this”。

private Context context; 

public void onCreate(){
super.onCreate();
context = getApplicationContext();
}

public static Context getAppContext() {
return context;
}

您可以使其他没有类型的类(只是函数持有者)可以访问此上下文。

然后,在您使用 Shared Prefs 时:

final SharedPreferences prefList = context.getSharedPreferences(
Constants.PREFERENCE_NAME, Context.MODE_PRIVATE);

如果每个人都在使用 getApplicationContext(),那么他们将能够相互交谈,因为他们都在使用相同的 Context。我总是建议您使用 Context.MODE_PRIVATE 除非您需要外部应用程序能够从那些 SharedPreferences 获取信息。

关于android - Shared-preferences 仅适用于 Fragment Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23226360/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com