我读到的onSaveInstanceState和onRestoreInstanceState在堆栈溢出几乎所有的文章,但我不解决我的问题。 我在我的main.java文本视图和按钮,当你点击的按钮值( 是一个int变量)变量将增加,并显示在文本视图,但是,当我旋转我的手机(方向的改变),文本视图复位。
我重写的onSaveInstanceState和onRestoreInstanceState,但它不工作。 还有一件事,我对山水景观的特殊布局land.xml文件。
这是我的code
进口android.app.Activity;进口android.graphics.Typeface;进口
android.os.Bundle;进口android.view.View;进口
android.widget.Button;进口android.widget.TextView;
公共类主要的扩展活动{
/ **第一次创建活动时调用。 * /
公众诠释一个= 0;
公共字符串的字体=TAHOMA.TTF;
TextView的电视=(TextView中)findViewById(R.id.salavat);
按钮B =(按钮)findViewById(R.id.showsalavat);
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
b.setOnClickListener(新Button.OnClickListener(){
公共无效的onClick(查看为arg0){
A ++;
tv.setText(+α);
}
});
}
@覆盖
保护无效的onSaveInstanceState(包SavedInstanceState){
super.onSaveInstanceState(SavedInstanceState);
SavedInstanceState.putInt(塞利克巴计数,一);
}
@覆盖
保护无效onRestoreInstanceState(包savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
一个= savedInstanceState.getInt(塞利克巴计数);
}
}
和我在这里的main.xml
<的TextView
机器人:ID =@ + ID /正马
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:重力=右
机器人:文本=@字符串/正马
机器人:TEXTSIZE =20SP/>
<按钮
机器人:ID =@ + ID / showsalavat
机器人:layout_width =FILL_PARENT
机器人:layout_height =150dp
机器人:文本=+
机器人:TEXTSIZE =100SP/>
<的TextView
机器人:ID =@ + ID / eltemas
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginBottom =55dp
机器人:文本=@字符串/ eltemas/>
<的TextView
机器人:ID =@ + ID /萨拉瓦特
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文本=大文本
机器人:textAppearance =机器人:ATTR / textAppearanceLarge
机器人:TEXTSIZE =35SP/>
<的TextView
机器人:ID =@ + ID / ferestade
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_marginBottom =24dp
机器人:文本=@字符串/萨拉瓦特
机器人:TEXTSIZE =20SP/>
< / LinearLayout中>
我真的需要一些这方面的帮助。 我真的AP preciate你的帮助。
解决方案我觉得这$ C $ c是对你有帮助。
公共类MainActivity扩展活动
{
保护无效的onSaveInstanceState(包outState)
{
super.onSaveInstanceState(outState);
的System.out.println(TAG,onSavedInstanceState);
最后的TextView文本=(TextView的)findViewById(R.id.textView1);
CharSequence的userText = text.getText();
outState.putCharSequence(savedText,userText);
}
保护无效onRestoreInstanceState(包savedState)
{
的System.out.println(TAG,onRestoreInstanceState);
最后的TextView文本=(TextView的)findViewById(R.id.textView1);
CharSequence的userText = savedState.getCharSequence(savedText);
text.setText(userText);
}
@覆盖
公共无效的onCreate(包savedInstanceState)
{
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
最终的字符串名称=5;
最后的TextView秀=(TextView中)findViewById(R.id.textView1);
按钮BTN =(按钮)findViewById(R.id.button1);
btn.setOnClickListener(新View.OnClickListener()
{
公共无效的onClick(视图v)
{
// TODO自动生成方法存根
show.setText(名称);
}
});
}
}
I read almost all article about onSaveInstanceState and onRestoreInstanceState in Stack overflow but I cant solve my problem. I have a text view and button in my main.java and while you click on button value of a ( a is an int variable) variable will increase and show in the text view, but, when I rotate my phone ( orientation change), text view reset.
I override onSaveInstanceState and onRestoreInstanceState but it doesn't work. one more thing, I have special layout-land.xml file for landscape view.
here is my code
import android.app.Activity; import android.graphics.Typeface; import
android.os.Bundle; import android.view.View; import
android.widget.Button; import android.widget.TextView;
public class main extends Activity {
/** Called when the activity is first created. */
public int a = 0;
public String fonts="TAHOMA.TTF";
TextView tv = (TextView) findViewById(R.id.salavat);
Button b = (Button) findViewById(R.id.showsalavat);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b.setOnClickListener(new Button.OnClickListener() {
public void onClick(View arg0) {
a++;
tv.setText(""+a);
}
});
}
@Override
protected void onSaveInstanceState(Bundle SavedInstanceState) {
super.onSaveInstanceState(SavedInstanceState);
SavedInstanceState.putInt("salavat-count", a);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
a= savedInstanceState.getInt ("salavat-count");
}
}
and here my main.xml
<TextView
android:id="@+id/shoma"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="@string/shoma"
android:textSize="20sp" />
<Button
android:id="@+id/showsalavat"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:text="+"
android:textSize="100sp" />
<TextView
android:id="@+id/eltemas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="55dp"
android:text="@string/eltemas" />
<TextView
android:id="@+id/salavat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="35sp" />
<TextView
android:id="@+id/ferestade"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:text="@string/salavat"
android:textSize="20sp" />
</LinearLayout>
I really need some help on this. I really appreciate your help.
解决方案I think this code is helpful for you..
public class MainActivity extends Activity
{
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
System.out.println("TAG, onSavedInstanceState");
final TextView text = (TextView)findViewById(R.id.textView1);
CharSequence userText = text.getText();
outState.putCharSequence("savedText", userText);
}
protected void onRestoreInstanceState(Bundle savedState)
{
System.out.println("TAG, onRestoreInstanceState");
final TextView text = (TextView)findViewById(R.id.textView1);
CharSequence userText = savedState.getCharSequence("savedText");
text.setText(userText);
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String name = "5";
final TextView show = (TextView)findViewById(R.id.textView1);
Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
show.setText(name);
}
});
}
}