方向更改后视图不更新
Posted
技术标签:
【中文标题】方向更改后视图不更新【英文标题】:View not updating after orientation change 【发布时间】:2016-07-14 11:04:10 【问题描述】:我有一个适配器类MyAdapter
-
@Override
public void bindView(View view, Context context, Cursor cursor)
ViewHolder viewHolder = (ViewHolder) view.getTag();
viewHolder.time.setText(strText);
viewHolder.time.setTextColor(0xff000000);
viewHolder.time.setTextSize(17);
viewHolder.time.setVisibility(View.VISIBLE);
viewHolder.time.setBackgroundColor(nColor);
viewHolder.time.setPadding(25,25,25,25);
MyFragment my= new MyFragment();
my.setLandScape1(strText,nColor);
view.invalidate();
在MyFragment
,
public void setLandScape1(String time1,int time_Bcolor1)
this.delay_time1 = time1;
this.delay_time_BColor1 = time_Bcolor1;
@Override
public void onSaveInstanceState(Bundle outState)
outState.putString("Time",delay_time1);
outState.putInt("BColor",delay_time_BColor1);
super.onSaveInstanceState(outState);
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
if (savedInstanceState != null)
delay_time1 = savedInstanceState.getString("Time");
Log.d("hi","delay_time1 = " + delay_time1);
delay_time_BColor1 = savedInstanceState.getInt("BColor");
Log.d("hi","delay_time_BColor1 =" + delay_time_BColor1);
日志是 -
水平转动时,
delay_time1 = 45
delay_time_BColor1 = 65000
再次垂直旋转时,
delay_time1 = 0
delay_time_BColor1 = 0
为什么当变成纵向时它变成0
,为什么在横向时,我在onCreate()
中得到值,但视图仍然没有更新。
【问题讨论】:
【参考方案1】:将逻辑从onCreate
移动到onRestoreInstanceState()
。
一旦重新创建视图,onRestoreInstanceState
将被调用,而不是 onCreate()
【讨论】:
好的,但我无法在 MyFragment 类中覆盖 onRestoreInstanceState()。可能是什么原因 你可以在fragment中使用onActivityCreated()来恢复,但这不是一致的设计。您应该设计活动以处理方向变化。 哦..我在onActivityCreated()中试过了,应用程序崩溃了以上是关于方向更改后视图不更新的主要内容,如果未能解决你的问题,请参考以下文章