2011-11-28 2 views
1

항목을 클릭 할 때마다 다른 페이지가 열리도록 목록을 만들었습니다. 문제는 뒤로 버튼을 사용하면 응용 프로그램이 닫히는 것입니다. 대신 이전 메뉴로 돌아가고 싶습니다. 이 문제를 어떻게 해결할 수 있습니까?내가 목록에서 항목을 선택할 때 다시 나타납니다

public class Listview extends Activity { 

    static ListView listView; 

    static public class BackgroundWorker extends AsyncTask<Void, Person, Void> { 
     @SuppressWarnings("unchecked") 
     @Override 
     protected void onPreExecute() { 
      // Prima di iniziare a inserire gli elementi svuotiamo l'adapter 
      ((ArrayAdapter<Person>) listView.getAdapter()).clear(); 
      super.onPreExecute(); 
     } 

     @Override 
     protected Void doInBackground (Void... params) { 
      Person[] people = { new Person("Privacy",R.drawable.icon1) }; 
      Person[] people1 = {new Person("Visualizzazione", R.drawable.icon1)}; 
      Person[] people2= { new Person("Notifiche", R.drawable.icon1)}; 

      // riempimento casuale della lista delle persone 
      Random r = new Random(); 

      for (int i = 0; i < 1; i++) { 
       // Pubblichiamo il progresso 
       publishProgress(people); 
       publishProgress(people1); 
       publishProgress(people2); 
      } 

      return null; 
     } 

     @SuppressWarnings("unchecked") 
     @Override 
     protected void onProgressUpdate (Person... values) { 
      // Aggiungiamo il progresso pubblicato all'adapter 
      ((ArrayAdapter<Person>) listView.getAdapter()).add(values[0]); 
      super.onProgressUpdate(values); 
     } 
    } 

    @Override 
    public void onCreate (final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     listView = (ListView) findViewById(R.id.personListView); 
     listView.setAdapter(new PersonAdapter(this, R.layout.row_item, new ArrayList<Person>())); 
     listView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Person p = (Person) parent.getItemAtPosition(position); 

       switch(position) { 
        case 0: 
         onCreate1(savedInstanceState); 
         // setContentView(R.layout.main1); 
         break; 
        case 1: 
         setContentView(R.layout.main2); 
         break; 
        case 2: 
         setContentView(R.layout.main3); 
       } 
      } 
     }); 
     new BackgroundWorker().execute(); 
    } 
} 

답변

3

귀하의 문제는 여기에 있습니다 : 당신은 Activity에 한 번 이상 setContentView 이상을 사용하지 않아야

switch(position) { 
    case 0: 
     onCreate1(savedInstanceState); 
     // setContentView(R.layout.main1); 
     break; 
    case 1: 
     setContentView(R.layout.main2); 
     break; 
    case 2: 
     setContentView(R.layout.main3); 
} 

. 새 ActivitystartActivity()으로 시작해야합니다. 이렇게하면 뒤로를 누르면 돌아올 활동 기록이 생깁니다.

+0

어떻게하면됩니까? : ( – user1023571

+1

나는 해결 ... 감사합니다 :) – user1023571

2

뒤로 버튼을 무시하고 고유 한 코드를 구현합니다. 이처럼 :

@Override 
    public void onBackPressed() { 
     //Your code 
    return; 
    } 
관련 문제