Прямо сейчас у меня есть приложение, которое выполняет поиск и возвращает элементы в ListFragment. Я хочу быть в состоянии сделать каждый ListFragment кликабельным, таким образом, что при щелчке, новый вид деятельности начинает использовать что-то вроде этого:Запуск нового действия из ListFragment с помощью onListItemClick()
public void onListItemClick(ListView listView, View view, int position, long id) {
Intent i = new Intent(this, PlaceView.class);
startActivity(i);
//eventually data from the List will be passed to the new Activity...
}
Класс, который запускает ListFragment, что мне нужно быть интерактивными выглядит следующим образом:
public class ResultsView extends FragmentActivity {
private ArrayAdapter<String> mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_results_view);
//Receive searchTerm from MainActivity
Intent intent = getIntent();
String searchTerm = intent.getStringExtra(MainActivity.SEARCH_TERM);
mAdapter = new ArrayAdapter<String>(this, R.layout.item_label_list);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ListFragment list = new ListFragment();
ft.add(R.id.fragment_content, list);
// Let's set our list adapter to a simple ArrayAdapter.
list.setListAdapter(mAdapter);
FactualResponderFragment responder = (FactualResponderFragment) fm.findFragmentByTag("RESTResponder");
if (responder == null) {
responder = new FactualResponderFragment();
ft.add(responder, "RESTResponder");
}
Bundle bundle = new Bundle();
bundle.putString("search_term", searchTerm);
responder.setArguments(bundle);
ft.commit();
}
public ArrayAdapter<String> getArrayAdapter() {
return mAdapter;
}
public void onListItemClick(ListView listView, View view, int position, long id) {
Intent i = new Intent(this, PlaceView.class);
startActivity(i);
}
Так что мои вопросы:
1) Как я создал onListItemClick()
работать с ListFragment list
, что я работаю с?
2) ListView
не имеет каких-либо атрибутов XML, относящихся к onClick
или тому подобное. Разве это не имеет значения?
3) Где должны быть onListItemClick()
, onItemClickListener()
и что-нибудь еще применимое?
Благодарим за помощь.
EDIT:
Следуя совету Pramod, я сделал класс: ListFragmentClickable extends ListFragment
и заселили ее со следующим:
@Override
public void onListItemClick(ListView listView, View view, int position, long id) {
Intent i = new Intent(this, PlaceView.class);
startActivity(i);
}
Eclipse, говорит мне, что new Intent(this, PlaceView.class)
не допускается, и что я могу только сказать, Intent i = new Intent();
. Ошибка: «Конструктор Intent (ListFragmentClickable, Class) не определен». Я попытался создать экземпляр Intent, как предложил Eclipse, а затем добавил i.setClass(this, PlaceView.class)
и i.setClassName(this, PlaceView.class)
, но это не сработало, поскольку я получил ту же ошибку.
1) Как обойти эту ошибку и переопределить метод, как планировалось?
2) Если я не могу этого сделать и должен использовать Intent i = new Intent();
, как я могу сказать, в каком классе мы даже нацеливаемся?
Какая именно ошибка? – JoxTraex
«Конструктор Intent (ListFragmentClickable, класс) не определен». –
user2163853
Является ли PlaceView активным? На основании этого нет. – JoxTraex