2012-11-06 4 views
0

이름 목록이 포함 된 ListView의 주 활동이 있습니다. 목록 항목을 클릭하면 두 번째 활동이 해고됩니다. 2 번째 활동에서 BACK 버튼을 누르면 2 번째 활동을 시작했을 때와 동일한 상태의 1 번째 활동으로 돌아와야합니다. 내가 이걸 어떻게 얻을 수 있는지 .. 알 겠어?활동의 상태를 저장하고 다시 검색하는 방법 Resume

몇 가지 샘플 코드를 첨부하십시오.

여기 그렇게하는 방법에는 여러 가지가 있습니다

Countries_List_Activity.java 




public class Countries_list_Activity extends Activity 
{ 
    String[] countries_list = new String[] { 
      "India", 
      "Pakistan", 
      "Sri Lanka", 
      "China", 
      "Bangladesh", 
      "Nepal", 
      "Afghanistan", 
      "North Korea", 
      "South Korea", 
      "Japan", 
      "Australia", 
      "GreenLand", 
      "Las vegas", 
      "U.K", 
      "Canada", 
      "Zimbabwe", 
      "Netherland", 
      "Singapore", 
      "Dubai", 
      "Burma", 
      "Sutherland", 
      "Weat Indies", 
      "New Zealand", 
      "Kenya", 
      "Namibia" 
    }; 

    int index = 0; 
    ListView list; 
    Context context=this; 


    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     list = (ListView) findViewById(R.id.listview); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, countries_list); 

     list.setAdapter(adapter); 


     list.setOnItemClickListener(new OnItemClickListener() 
     { 
      public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
      { 
       Object tmp = parent.getItemAtPosition(position); 
       String name=tmp.toString(); 
       System.out.println(name); 

       Intent myIntent = new Intent(); 
       //myIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
       myIntent.setClassName("com.mink7.countries","com.mink7.countries.Country_Selected_Activity"); 
       myIntent.putExtra("name", name); 
       startActivity(myIntent); 
      } 
     }); 


    } 


    protected void onPause() 
    { 
     super.onPause(); 

     index = list.getFirstVisiblePosition(); 
     // Save scroll position 
     /* SharedPreferences preferences = context.getSharedPreferences("SCROLL", 0); 
     SharedPreferences.Editor editor = preferences.edit(); 
     int scroll = list.getScrollY(); 
     editor.putInt("ScrollValue", scroll); 
     editor.commit();*/ 
    } 

    @Override 
    protected void onResume() 
    { 
     super.onResume(); 

     list.setSelectionFromTop(index, 0); 
     // Get the scroll position 
     /*SharedPreferences preferences = context.getSharedPreferences("SCROLL", 0); 
     int scroll = preferences.getInt("ScrollView", 0); 
     list.scrollTo(0, scroll);*/ 
    } 

    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 


Country_selected_Activity.java 



package com.mink7.countries; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class Country_Selected_Activity extends Activity 
{ 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.selected_country_display); 
     TextView tv=(TextView) findViewById(R.id.textView1); 
     Button b=(Button) findViewById(R.id.button1); 

     Bundle extras = getIntent().getExtras(); 

     String name =extras.getString("name"); 
     tv.setText(name); 

     b.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Intent intent=new Intent(); 
       intent.setClassName("com.mink7.countries","com.mink7.countries.Countries_list_Activity"); 
       startActivity(intent); 

      } 
     }); 


    } 


} 
+0

을 이렇게

//index = list.getFirstVisiblePosition(); 

onPuase

onItemClick(AdapterView<?> parent, View view,int position, long id) index = position; 

아래 라인이 추가 첫 번째 활동의 onResume(). –

+2

http://stackoverflow.com/questions/151777/saving-activity-state-in-android/151940#151940 –

답변

3

내 샘플 코드입니다. 하나의 간단한 해결책은

색인을 정적 변수로 만듭니다.

public static int index = 0; 

가 돌아올 때 다시 두 번째 활동에서) (onResume에

list.setSelection(index); 

//list.setSelectionFromTop(index, 0); 
관련 문제