如何保存状态的onSaveInstanceState和onRestoreInstanceState而方向变化状态、方向、onSaveInstanceState、onRestoreInstanceSta

2023-09-05 03:30:25 作者:温酒叙余生

我读到的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(名称);

            }
        });
    }
}
 
边缘计算体验之四 ZStack Mini3.0 FT如何提升企业可用性

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

            }
        });
    }
}