#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()
вы хотите перейти от одного действия к другому, тогда —
-
PresentActivity — это ваше текущее действие, из которого вы хотите перейти ко второму действию.
-
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
.