Android: как мне переключиться с одного действия на другое, щелкнув элементы из ListView

#android #android-listview #android-activity

#Android #android-listview #android-активность

Вопрос:

я создал список меню, содержащий воспроизведение, настройки, выход. но нажатие кнопки не приводит меня к желаемому действию, список не работает .. может ли кто-нибудь помочь мне решить проблему .. будет благодарен.. да, это элемент управления представлением списка..

в моем коде есть две ошибки, одна из которых заключается в том, что @@ Тип new AdapterView.OnItemClickListener(){} должен реализовать унаследованный абстрактный метод AdapterView.OnItemClickListener.onItemClick(AdapterView, View, int, long)@@ в СТРОКЕ 1

А другой @@ View не может быть преобразован в тип @@ в СТРОКЕ 2 «На самом деле я хочу переключаться с одного экрана на другой, когда я нажимаю на элемент на экране главного меню»

Вот код главного меню

 public class MenuActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);
        ListView menuList = (ListView) findViewById(R.id.list);
        String[] items = {
            getResources().getString(R.string.pla),
            getResources().getString(R.string.sco),
            getResources().getString(R.string.set),
            getResources().getString(R.string.hel),
            getResources().getString(R.string.qui)
        };
        ArrayAdapter < String > adapt = new ArrayAdapter < String > (this, R.layout.menu_items, items);
        menuList.setAdapter(adapt);
        menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() { //LINE 1 error 
            public void onItemClick(AdapterView <? > parent, View itemClicked, //LINE 2 error
                int position, long id) {
                TextView textView = (TextView) itemClicked;
                String strText = textView.getText().toString();
                if (strText.equalsIgnoreCase(getResources().getString(
                    R.string.pla))) {
                    // Game
                    startActivity(new Intent(MenuActivity.this,
                        GameActivity.class));
                } else if (strText.equalsIgnoreCase(getResources().getString(
                    R.string.hel))) {
                    // Help
                    startActivity(new Intent(MenuActivity.this,
                        HelpActivity.class));
                } else if (strText.equalsIgnoreCase(getResources().getString(
                    R.string.set))) {
                    //Settings 
                    startActivity(new Intent(MenuActivity.this,
                        SettingsActivity.class));
                } else if (strText.equalsIgnoreCase(getResources().getString(
                    R.string.sco))) {
                    //  Scores 
                    startActivity(new Intent(MenuActivity.this,
                        ScoresActivity.class));
                }
            }
        });
    }
}
  

Комментарии:

1. Пожалуйста, подробнее о проблеме. Поделитесь своим кодом, чтобы я мог визуализировать, где проблема?

2. Просто чтобы убедиться, что нет недоразумений: у вас есть ListView или меню с элементами (воспроизведение, выход, …)?

3. уточните, что вы используете? Просмотр списка или меню???

Ответ №1:

 ListView lv = ...;
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0,View arg1, int arg2, long arg3) 
{
  //Do Your Stuff
}
});
  

или вы можете создать свой пользовательский адаптер и записать событие нажатия кнопки

Ответ №2:

использовать намерение

 Intent play= new Intent(getApplicationContext(),Play.class);
startActivity(play);
  

есть много руководств по меню

Ответ №3:

Эта задача может быть выполнена с помощью одного из основных строительных блоков Android, названных Intents, и одного из методов public void startActivity (Intent intent) , который принадлежит вашему классу Activity.

Намерение — это абстрактное описание операции, которая должна быть выполнена. Его можно использовать с startActivity для запуска действия, BroadcastIntent для отправки его любым заинтересованным компонентам BroadcastReceiver и startService (намерение) или bindService (намерение, ServiceConnection, int) для связи с фоновой службой.

Намерение предоставляет средство для выполнения поздней привязки времени выполнения между кодом в разных приложениях. Его наиболее важное применение заключается в запуске действий, где его можно рассматривать как связующее звено между действиями. По сути, это пассивная структура данных, содержащая абстрактное описание выполняемого действия.

Обратитесь к официальным документам —http://developer.android.com/reference/android/content/Intent.html

public void startActivity (Intent intent) — Используется для запуска нового действия.

Итак, предположим, у вас есть два класса активности, и при нажатии кнопки OnClickListener() вы хотите перейти от одного действия к другому, тогда —

  1. PresentActivity — это ваше текущее действие, из которого вы хотите перейти ко второму действию.

  2. NextActivity — это ваше следующее действие, на которое вы хотите перейти.

Таким образом, намерение было бы таким

 Intent(PresentActivity.this, NextActivity.class)
  

Наконец, это будет полный код

   public class PresentActivity extends Activity {
        protected void onCreate(Bundle icicle) {
            super.onCreate(icicle);

            setContentView(R.layout.content_layout_id);

            final Button button = (Button) findViewById(R.id.button_id);
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // Perform action on click   

                    Intent activityChangeIntent = new Intent(PresentActivity.this, NextActivity.class);

                    // currentContext.startActivity(activityChangeIntent);

                    PresentActivity.this.startActivity(activityChangeIntent);
                }
            });
        }
    }
  

Этот пример связан с нажатием кнопки. вы можете использовать код в любом месте, который написан внутри кнопки нажатия OnClickListener() в любом месте, где вы хотите переключаться между вашими действиями, например, в вашем setOnItemClickListener .