使用onListItemClick()从ListFragment启动新活动

use*_*853 3 android onclick

现在我有一个应用程序搜索并返回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...
}
Run Code Online (Sandbox Code Playgroud)

启动我需要点击的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);
    }
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

1)如何设置onListItemClick()ListFragment list我合作的工作?

2)ListView没有任何与之相关的XML属性onClick.这没关系吗?

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);
}
Run Code Online (Sandbox Code Playgroud)

Eclipse告诉我这new Intent(this, PlaceView.class)是不允许的,我只能说Intent i = new Intent();.错误是"构造函数Intent(ListFragmentClickable,Class)未定义." 我试图实例化作为意向Eclipse的建议,然后加入i.setClass(this, PlaceView.class)i.setClassName(this, PlaceView.class),但没有奏效,因为我得到了同样的错误.

1)如何解决此错误并按计划覆盖该方法?

2)如果我不能这样做,并且必须使用Intent i = new Intent();,我该如何判断我们甚至瞄准的课程?

小智 7

试试吧,

Intent intent = new Intent(getActivity().getApplicationContext(), YourClassName.class);
startActivity(Intent intent);
Run Code Online (Sandbox Code Playgroud)

其中"YourClassName"是您要调用的类的类型.