java - 通过 SharedPreference 更新 ImageView 重新创建活动?
问题描述
我制作了一个应用程序,用户可以在其中通过 ListPreference 将 imageview 的图像更改为不同的团队徽标。当从 ListPreference 中选择它时,它确实会更改为正确的图像,但是当在设备上运行时,似乎整个活动被重新创建(即,被关闭然后重新打开)。有没有办法避免这种情况,所以它可以平滑地转换回 MainActivity 并更新图像,而不会看起来像是重新创建的。
这是我的代码:
主要活动:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String team_chooser = getPrefs.getString("prefSetImage","1");
if(team_chooser.equals("1")){
awayTeam.setImageResource(R.drawable.team1logo);
}else if(team_chooser.equals("2")){
awayTeam.setImageResource(R.drawable.team2logo);
}else if(team_chooser.equals("3")){
awayTeam.setImageResource(R.drawable.team3logo);
}
super.onWindowFocusChanged(hasFocus);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.team_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.team_settings) {
Intent settingsIntent = new Intent(this, SettingsActivity.class);
startActivity(settingsIntent);
return true;
}
return super.onOptionsItemSelected(item);
}
设置活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
ActionBar actionBar = this.getSupportActionBar();
if(actionBar != null){
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
if(id == android.R.id.home){
NavUtils.navigateUpFromSameTask(this);
}
return super.onOptionsItemSelected(item);
}
显现:
<activity
android:name=".MainActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SettingsActivity"
android:label="@string/team"
android:launchMode="singleTop"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
解决方案
是的,有时会产生问题,所以您只需将代码放入 onResume()。我希望它对您有所帮助。
推荐阅读
- amazon-web-services - 为什么 AWS SQS 不通过长连接提供推送机制?
- ios - 如何在 iOS 的触地得分上添加不透明度?
- vba - 重置表单时出现奇怪的文本框错误?
- laravel - laravel 和验证请求
- jwt - JWT - 将刷新令牌保存为 cookie 危险吗?
- html - div Container 中的自动滚动动画
- flutter - dart:js 调用 promiseToFuture 时出错 - NoSuchMethodError: 试图调用非函数,例如 null: 'jsPromise.then'
- amazon-web-services - Kinesis 流的 AWS API Gateway 模板映射
- r - 如何使用从 R 中的另一个数据帧计算的值创建数据帧?
- python - 使用 Python Facebook Marketing SDK 获取帐户有权访问的 Facebook 页面 ID 列表