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" に表示されるはずですが、そうではありません。それは何も示していません。何か案が ?