2016-07-14 6 views
0

ich eine Adapterklasse MyAdapter haben -Ansicht Aktualisierung nicht nach Orientierungsänderung

@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(); 
     } 
    } 

In 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); 
    } } 

Die Protokolle sind -

Wenn horizontal gedreht,

delay_time1 = 45 

delay_time_BColor1 = 65000 

Auch wenn vertikal gedreht,

delay_time1 = 0 

delay_time_BColor1 = 0 

Warum es 0 wird, wenn zwar auf Hochformat und warum in der Landschaft gedreht, erhalte ich Werte in onCreate(), sieht immer noch nicht aktualisiert.

Antwort

0

Verschieben Sie die Logik von onCreate zu onRestoreInstanceState().

Sobald die Ansicht neu erstellt wird, wird onRestoreInstanceState aufgerufen werden und nicht onCreate()

+0

Ok, aber ich bin nicht in der Lage onRestoreInstanceState außer Kraft setzen() in MyFragment Klasse. Was könnte der Grund sein? – Mark023

+0

Sie können onActivityCreated() in Fragment zum Wiederherstellen verwenden, aber das ist nicht aus Design. Sie sollten die Aktivität so gestalten, dass sie Änderungen der Ausrichtung berücksichtigt. – EagleEye

+0

Oh .. Ich versuchte in onActivityCreated(), die App stürzt ab – Mark023