2017-03-18 3 views
0
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    getString(); 
} 
private void getString(){ 
    OkHttpClient client = new OkHttpClient(); 
    Request request = new Request.Builder() 
      .url(URL_MOVIE) 
      .build(); 

    client.newCall(request).enqueue(new Callback() { 

     @Override 
     public void onFailure(Call call, IOException e) { 

     } 

     @Override 
     public void onResponse(Call call, Response response) throws IOException { 



      res_120 = response.body().string(); 
      runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
           updateUI(res_120); 
          } 
         }); 
     } 
    }); 

} 

void updateUI(String string) { 
    textView.setText(string); 

} 

화면 회전시 textView 텍스트를 어떻게 저장합니까? 화면을 회전시킬 때마다 새로운 문자열이 응답에서 검색되고 my textView 텍스트가 변경됩니다. 어떻게 그 일을 막을 때까지 나는 동일한 문자열이 화면 회전 중에 textview에 남아 있는지 확인하고 싶지 않다. 그리고 나는 텍스트 스크립트의 다른 문자열을 얻기 위해 onclicklistener에 getString 메소드를 호출하여 직접 업데이트하지 않는다.화면 회전시 textView 텍스트를 어떻게 저장합니까? 화면을 회전 할 때마다 새로운 문자열이 검색됩니다.

+0

사용'onSaveInstanceState'을 절약 할 수 있습니다. 이 답변을 참조하십시오 : http://stackoverflow.com/a/13023121/1754982 – Shubham

답변

0
 String yourstring=""; 
    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      if (savedInstanceState != null) { 
      String myString = savedInstanceState.getString("MyString"); //get it 
      textView.setText(myString); 
     } else { 
      getString(); 
     } 


     } 
     private void getString(){ 
      OkHttpClient client = new OkHttpClient(); 
      Request request = new Request.Builder() 
        .url(URL_MOVIE) 
        .build(); 

      client.newCall(request).enqueue(new Callback() { 

       @Override 
       public void onFailure(Call call, IOException e) { 

       } 

       @Override 
       public void onResponse(Call call, Response response) throws IOException { 



        res_120 = response.body().string(); 
        runOnUiThread(new Runnable() { 
            @Override 
            public void run() { 
             updateUI(res_120); 
            } 
           }); 
       } 
      }); 

     } 

     void updateUI(String string) { 
      textView.setText(string); 
      yourstring=string; 

     } 
     @Override 
     public void onSaveInstanceState(Bundle savedInstanceState) { 

      // Save UI state changes to the savedInstanceState. 
      // This bundle will be passed to onCreate if the process is 
      // killed and restarted. 


      savedInstanceState.putString("MyString", yourstring); // save your instance 

      // etc. 

      super.onSaveInstanceState(savedInstanceState); 
     } 

     //onRestoreInstanceState 

     @Override 
     public void onRestoreInstanceState(Bundle savedInstanceState) { 

      super.onRestoreInstanceState(savedInstanceState); 

      // Restore UI state from the savedInstanceState. 
      // This bundle has also been passed to onCreate. 


      String myString = savedInstanceState.getString("MyString"); //get it 
      textView.setText(myString); 
     } 

당신은 당신의 instance

+0

빠른 응답 주셔서 감사합니다. 그러나 문제는 여전히 지속됩니다. 여전히 화면 회전에 변화가 있습니다. –

+0

내 대답을 확인하십시오 onCreate 시도해보십시오. @JasmeetSingh –

+0

작동하지 않는 행운과 onRestoreInstance 및 onCreate 메서드의 setText 메서드의 값은 문자열이 아니라 myString이어야합니다. –