0

putExtra() メソッドを使用してフラグメント間で文字列を渡すのに問題があります。textView でその文字列値を表示するために listView から別のアクティビティに文字列値を渡すと、何も表示されません。

これが私のコードです。

public class As extends Fragment implements OnItemClickListener {

    String array[]= 
        {
            "Item 1 ...",
            "Item 2 ...",
            "Item 3 ...",
            "Item 4 ...",
            "Item 5 ...",
            "Item 6 ...",
            "Item 7 ...",
            "Item 8 ...",
            "Item 9 ..."
        };
    ListView lv;    

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.as, container, false);

        lv = (ListView)rootView.findViewById(R.id.item_list);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.all_lists, R.id.list_text, array);
        lv.setAdapter(adapter); 
        lv.setOnItemClickListener(this);

        return rootView;
    }


    @Override
    public void onItemClick(AdapterView<?> adapt, View v, int position, long id) {


        Intent i = new Intent(getActivity(), ItemDetails.class).putExtra("TEXT", String.valueOf(position));
        startActivity(i);       
    }

}

次に、文字列値を取得して TextView で表示する 2 番目のクラスを示します。

public class ItemDetails extends Activity implements OnClickListener {

    TextView tv;
    ImageView right, left, back;

    public static String retrieve;

    String array[] = {
            "Item 1 ... Price: 2$ ... Available in NJ",
            "Item 2 ... Price: 3$ ... Available in NY",
            "Item 3 ... Price: 1$ ... Available in Australia",
            "Item 4 ... Price: 2.5$ ... Available in Paris",
            "Item 5 ... Price: 1.4$ ... Available in Melbourne",
            "Item 6 ... Price: 0.99$ ... Available in Cyprus",
            "Item 7 ... Price: 12$ ... Available in Carolina",
            "Item 8 ... Price: 3.6$ ... Available in Ohio",
            "Item 9 ... Price: 4$ ... Available Washington"
 };
    public static int IntValue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.as);


        tv = (TextView) findViewById(R.id.tv_item_details);
        if (tv == null) { Log.w("", "TextView is null");} 
        retrieve = getIntent().getStringExtra("TEXT");


        IntValue = Integer.parseInt(retreive);
        tv.setText(array[Integer.parseInt(retrieve)]);

        right = (ImageView) findViewById(R.id.right_arrow);
        left = (ImageView) findViewById(R.id.left_arrow);
        back = (ImageView) findViewById(R.id.back);

        right.setOnClickListener(this);
        left.setOnClickListener(this);
        back.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
        case R.id.right_arrow:

            IntValue = IntValue + 1;
            if(IntValue  == 9){
                IntValue = 0;
            }
            tv.setText(array[IntValue]);
            if (IntValue  == 8)
            {
                IntValue = -1;
            }

            break;

        case R.id.left_arrow:

            if(IntValue == 0){
                IntValue = 9;
            }
            IntValue = IntValue - 1;
            tv.setText(array[IntValue]);

            break;

        case R.id.back:
            this.finish();

            break;

        }
    }

}

リスト項目をクリックすると、ItemDetails アクティビティの TextView "tv" に表示されるはずですが、そうではありません。それは何も示していません。何か案が ?

4

2 に答える 2

0

以下を使用します

Intent i = new Intent(getActivity(), ItemDetails.class).putExtra("TEXT", array[position].toString());
startActivity(i); 

取得する

retrieve  = getIntent().getStringExtra("TEXT");
于 2015-06-02T14:59:54.923 に答える
0

これを行う

 @Override
public void onItemClick(AdapterView<?> adapt, View v, int position, long id) {


    Intent i = new Intent(getActivity(), ItemDetails.class).putExtra("TEXT", array[position]);
    startActivity(i);       
}
于 2013-07-17T13:52:09.100 に答える