2

フラグメント内に ListView を作成しましたが、ListView の選択を別のアクティビティにリンクできないようです。誰かがこれで私を助けてくれることを願っています。フラグメント内にない場合でも同じことを実行できます。

以下のコードは、他のアクティビティとリンクする通常の ListView を示しています。

public class Main extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_Main);

    ListView listView2 = (ListView) findViewById(R.id.listView2);
    String[] values = new String[] { "Apple", "Orange", "Banana", "Pineapple", "Kiwi"};


    ArrayAdapter <String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values);
    listView2.setAdapter(adapter2);

            listView2.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                switch( position )
                {
                   case 0:  Intent newActivity = new Intent(Main.this, FirstChoice.class);     
                            startActivityForResult(newActivity, 0);
                            break;
                   case 1:  Intent newActivity1 = new Intent(Main.this, Second Choice.class);     
                            startActivityForResult(newActivity1, 1);
                            break;

                            .
                            .
                            .

以下は私の現在のフラグメントコードです:

public class Tab1 extends ListFragment{

ListView list;
ArrayAdapter <String> adapter;
Context context;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

        context = getActivity();
        View view;
        view = inflater.inflate(R.layout.activity_firstchoice, null);

        String [] elements = context.getResources().getStringArray(R.array.thelist);

        list = (ListView) view.findViewById(R.id.listView1);
        adapter = new ArrayAdapter <String> (context, R.layout.activity_ecfs, R.id.section_label, elements);

        list.setAdapter(adapter);

        return view;
}

public void onListItemClick(ListView l, View v, int position, long id) {
    // Do something with the data
    switch( position )
    {
       case 0:  Intent newActivity = new Intent();     
                startActivityForResult(newActivity, 0);
                break;
       case 1:  Intent newActivity1 = new Intent();     
                startActivityForResult(newActivity1, 1);
                break;
       case 2:  Context context2 = getApplication();
                CharSequence text2 = "Not Available";
                int duration2 = Toast.LENGTH_SHORT;

                Toast toast2 = Toast.makeText(context2, text2, duration2);
                toast2.show();
                break;
    }

  }
}

一番上のListViewと似たようなことをしたいと思っていましたが、フラグメント内のものを使用していました。

4

1 に答える 1

0

Fragmentの親への参照を取得するだけActivityです。

    case 0:  
        Intent newActivity = new Intent(getActivity(), FirstChoice.class);     
        startActivityForResult(newActivity, 0);
        break;

または、渡されたListViewまたはを使用して、それらからViewを取得Contextします。

    case 0:  
        Intent newActivity = new Intent(l.getContext(), FirstChoice.class);     
        startActivityForResult(newActivity, 0);
        break;
于 2013-03-15T03:42:32.467 に答える