2016-11-29 5 views
0

Я разрабатываю простую флеш-панель для Android, и когда я поворачиваю экран, я хочу сохранить предыдущий статус. У меня есть несколько кнопок, которые меняют цвет макета, и когда я касаюсь экранных кнопок, появляются и исчезают. но, поскольку я сказал, что мне нужно сохранить последний статус, у меня возникла идея, что я должен сделать это с onSaveInstanceState и onRestoreInstanceState, но, к сожалению, я не знаю, как реализовать код. Вот код, который я написал:Проблема с ориентацией экрана

// import com.uncocoder.course.app.startup4.R; 
import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.Toast; 


public class FlashlightActivity extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final Button Black = (Button) findViewById(R.id.Black); 
     final Button White = (Button) findViewById(R.id.White); 
     final Button Yellow = (Button) findViewById(R.id.Yellow); 
     final Button Red = (Button) findViewById(R.id.Red); 
     final Button Green = (Button) findViewById(R.id.Green); 
     final LinearLayout backLayout = (LinearLayout) findViewById(R.id.backLayout); 
     final TextView txtCaption = (TextView) findViewById(R.id.txtCaption); 

     Black.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       backLayout.setBackgroundColor(Color.parseColor("#000000")); 
       Toast.makeText(FlashlightActivity.this, "Black Color Set", Toast.LENGTH_SHORT).show(); 

      } 
     }); //end black 

     White.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       backLayout.setBackgroundColor(Color.parseColor("#ffffff")); 
       Toast.makeText(FlashlightActivity.this, "White Color Set", Toast.LENGTH_SHORT).show(); 

      } 
     }); //end white 

     Yellow.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       backLayout.setBackgroundColor(Color.parseColor("#ffff00")); 
       Toast.makeText(FlashlightActivity.this, "Yellow Color Set", Toast.LENGTH_SHORT).show(); 

      } 
     }); //end yellow 

     Red.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       backLayout.setBackgroundColor(Color.parseColor("#ff0000")); 
       Toast.makeText(FlashlightActivity.this, "Red Color Set", Toast.LENGTH_SHORT).show(); 

      } 
     }); //end red 

     Green.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       backLayout.setBackgroundColor(Color.parseColor("#a4c639")); 
       Toast.makeText(FlashlightActivity.this, "Green Color Set", Toast.LENGTH_SHORT).show(); 

      } 
     }); //end green 

     backLayout.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       if (Black.getVisibility() == View.GONE) { 
        Black.setVisibility(View.VISIBLE); 
       } // end if 
       else { 
        Black.setVisibility(View.GONE); 
       }// end else 
       if (White.getVisibility() == View.GONE) { 
        White.setVisibility(View.VISIBLE); 
       } // end if 
       else { 
        White.setVisibility(View.GONE); 
       }// end else 
       if (Yellow.getVisibility() == View.GONE) { 
        Yellow.setVisibility(View.VISIBLE); 
       } // end if 
       else { 
        Yellow.setVisibility(View.GONE); 
       }// end else 

       if (Red.getVisibility() == View.GONE) { 
        Red.setVisibility(View.VISIBLE); 
       } // end if 
       else { 
        Red.setVisibility(View.GONE); 
       }// end else 

       if (Green.getVisibility() == View.GONE) { 
        Green.setVisibility(View.VISIBLE); 
       } // end if 
       else { 
        Green.setVisibility(View.GONE); 
       }// end else 

      }// end public void 
     }); // end seton 

    } 
} 
+0

Посмотрите на этот пост http://stackoverflow.com/questions/6525698/how-to-use- onsavedinstancestate-пример, пожалуйста, –

ответ

0

Вы должны переопределить "onSaveInstanceState (Bundle outState)" в классе. Храните данные в виде пакета в этом методе и добавляйте те же данные в метод onCreateView, или вы можете блокировать аранжировку.

для этого ..

Manifest File

. 
. 
<activity android:name=".ExampleActivity" 
    android:label="@string/app_name" 
    android:screenOrientation="portrait" /> 
. 
. 
. 

https://stackoverflow.com/a/582585/7227819

0
@Override 
public void onSaveInstanceState(Bundle outState) { 
    //put the status of the button which is enabled or not by boolean value 
    outState.putBoolean("buttonstatus",true); 
    super.onSaveInstanceState(outState); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (savedInstanceState != null) { 
     boolean message = savedInstanceState.getBoolean("buttonstatus"); 
     Toast.makeText(this, message, Toast.LENGTH_LONG).show(); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^