现在我有一个应用程序可以搜索并返回ListFragment中的项目。我希望能够使每个ListFragment可单击,这样当单击它时,新活动就会开始使用如下内容:
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
没有任何与onClick
等相关的XML属性。这没关系吗?
3)onListItemClick()
,onItemClickListener()
和其他适用的地方应该在哪里?
感谢您的帮助。
编辑:
按照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)未定义。”我试着像Eclipse建议的那样实例化Intent,然后添加了i.setClass(this, PlaceView.class)
和i.setClassName(this, PlaceView.class)
但是它没有用,因为我得到了同样的错误。
1)如何解决此错误并按计划覆盖该方法?
2)如果我不能这样做,并且必须使用Intent i = new Intent();
,我该如何判断我们甚至瞄准的课程?
答案 0 :(得分:7)
试试这个,
Intent intent = new Intent(getActivity().getApplicationContext(), YourClassName.class);
startActivity(Intent intent);
其中“YourClassName”是您要调用的类的类型。
答案 1 :(得分:2)
从listfragment扩展一个类,然后覆盖listitemclick函数。
答案 2 :(得分:0)
Intent i = new Intent((context),class)
其中class是与intent一起使用的已识别类型。具体来说,这是活动,服务等。此外,上下文应该来自您通过使用this
实现的封装列表视图中的不是。使用getApplicationContext()或从应用程序类中获取它,您需要有效的上下文。
如果PlaceView不是公认的类型,那么你就无法做你想做的事。
答案 3 :(得分:0)
使用“getActivity()。getApplicationContext()”
可以轻松获取上下文