方向屏幕问题
问题描述:
我正在开发一个简单的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
}
}
答
您必须重写“onSaveInstanceState(Bundle outState)”到类中。 将数据作为一个包存储在此方法中,并将相同的数据添加到onCreateView方法中,或者可以阻止Oriantation。
这个..
清单文件
.
.
<activity android:name=".ExampleActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
.
.
.
答
@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();
}
}
看看这个帖子http://*.com/questions/6525698/how-to-use- onsavedinstancestate - 例如,请 –