3

現在、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);
    }

だから私の質問は:

onListItemClick()1)を使用している で使用するには、 をどのようにセットアップすればよいListFragment listですか?

2)などListViewに関連する XML 属性はありませんonClick。それは問題ではありませんか?

3) 、およびその他の該当するものはどこonListItemClick()onItemClickListener()ありますか?

ご協力いただきありがとうございます。

編集:

Pramod のアドバイスに従って、 class: を作成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が提案したようにインテントをインスタンス化してから追加しようとしましi.setClass(this, PlaceView.class)i.setClassName(this, PlaceView.class)が、同じエラーが発生したため機能しませんでした。

1) このエラーを回避し、計画どおりにメソッドをオーバーライドするにはどうすればよいですか?

2)それができず、 を使用する必要がある場合Intent i = new Intent();、どのクラスを目指しているのかを意図に伝えるにはどうすればよいですか?

4

4 に答える 4

7

これを試してみてください。

Intent intent = new Intent(getActivity().getApplicationContext(), YourClassName.class);
startActivity(Intent intent);

「YourClassName」は、呼び出したいクラスのタイプです。

于 2013-04-15T20:22:15.687 に答える
2

listfragment からクラスを拡張し、listitemclick 関数をオーバーライドします。

于 2013-03-20T03:41:01.400 に答える
0

この「getActivity().getApplicationContext()」を使用すると、簡単にコンテキストを取得できます。

于 2013-03-24T10:24:48.130 に答える
0
Intent i = new Intent((context),class) 

class は意図を持って動作する認識された型です。具体的には、これはアクティビティ、サービスなどです。また、コンテキストは、カプセル化されたリストビューからではなくthis、アプリケーションから取得する必要があります。これは、を使用して達成しています。getApplicationContext() を使用するか、アプリケーション クラスから取得します。有効なコンテキストが必要です。

PlaceView が認識されたタイプでない場合、やろうとしていることを実行できません。

于 2013-03-21T01:13:11.357 に答える