2011-11-28 81 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

你的問題是在這裏:

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

你不應該使用超過一次setContentView更多的Activity。您應該改爲使用startActivity()啓動新的Activity。通過這種方式,您可以查看按回退後將返回的活動歷史記錄。

+0

我該怎麼辦? :( – user1023571

+1

我解決了......謝謝:) – user1023571

2

你重寫後退按鈕和執行自己的代碼。就像這樣:

@Override 
    public void onBackPressed() { 
     //Your code 
    return; 
    } 
相關問題