【问题标题】:come back when I select an item from the list当我从列表中选择一个项目时回来
【发布时间】:2011-11-28 16:09:28
【问题描述】:

我制作了一个列表,这样每次我点击一个项目时,它都会打开另一个页面。问题是如果您使用后退按钮,它将关闭应用程序。我宁愿返回上一个菜单;我该如何解决这个问题?

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

【问题讨论】:

    标签: android android-layout listadapter


    【解决方案1】:

    你的问题在这里:

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

    您不应在 Activity 中多次使用 setContentView。相反,您应该使用startActivity() 启动一个新的Activity。这样一来,您就有了一个活动历史记录,这些活动将在按 Back 时返回。

    【讨论】:

      【解决方案2】:

      您覆盖后退按钮并实现您自己的代码。像这样:

      @Override
          public void onBackPressed() {
              //Your code
          return;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-20
        • 2012-09-11
        • 1970-01-01
        • 2020-09-10
        • 1970-01-01
        相关资源
        最近更新 更多