使用putExtra()方法在片段之间传递字符串时遇到问题。 当我将一个字符串值从listView传递给另一个活动以便在textView中查看该字符串值时,它什么也没有显示。
这是我的代码。
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中查看它。
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”中,但事实并非如此。 它没有任何表现。 有什么想法吗?
答案 0 :(得分: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);
}
答案 1 :(得分:0)
使用以下
Intent i = new Intent(getActivity(), ItemDetails.class).putExtra("TEXT", array[position].toString());
startActivity(i);
检索
retrieve = getIntent().getStringExtra("TEXT");