我希望点击的项目显示在另一个活动中。第二个活动会出现,但字符串不会显示。我尝试了其他方法,但第二项活动仍然是空白。 这是主要活动
EditText TxtOne;
Button btOne;
ListView lisOne;
ArrayList aL;
ArrayAdapter<String> adapt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TxtOne = (EditText) findViewById(R.id.TxtOne);
btOne = (Button) findViewById(R.id.btOne);
lisOne = (ListView) findViewById(R.id.lisOne);
aL = new ArrayList<String>();
adapt = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,aL);
lisOne.setAdapter(adapt);
onBClick();
lisOne.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
Intent itemInfo = new Intent(MainActivity.this, secondActivity.class);
itemInfo.putExtra("Itemis",position);
startActivity(itemInfo);
}
});
}
public void onBClick(){
btOne.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String InpItem = TxtOne.getText().toString();
aL.add(InpItem);
adapt.notifyDataSetChanged();
}
});
}
以下是第二个活动
public class secondActivity extends AppCompatActivity {
TextView txt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bundle passedData = getIntent().getExtras();
txt2 = (TextView)findViewById(R.id.txt2);
txt2.setText(passedData.getString("Itemis"));
}
}
我已经阅读了其他类似的帖子,但都没有。 有人谈到textView不在活动布局中,因为结果为NULL。 textView处于活动布局中,但仍然不显示该项目。 解决任何人?
答案 0 :(得分:0)
您正在错误地传递和阅读其他内容。执行以下操作:
itemInfo.putExtra("Itemis", position);
和
txt2.setText(String.valueof(getIntent().getIntExtra("Itemis")));
答案 1 :(得分:0)
在下面的Listener中,您要将position
添加到itemInfo
Intent。此处的位置类型为 int ,因此您应该getIntExtra()
来检索整数数据,而不是getStringExtra()
lisOne.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
Intent itemInfo = new Intent(MainActivity.this, secondActivity.class);
itemInfo.putExtra("Itemis",position); //position is INT value!!
startActivity(itemInfo);
}
});
所以你应该这样做 -
getIntExtra (字符串名称,int defaultValue ); //这会返回position的int值。
替换这两行 -
txt2 = (TextView)findViewById(R.id.txt2);
txt2.setText(Integer.toString(getIntent().getExtras().getIntExtra("Itemis",0))); //getting int value in second activity and converting into string for displaying
注意 - 您应该使用getStringExtra("Itemis")
从Intents中检索字符串数据。不是getString("Itemis")
。
有关设置和从意图中检索值的更多详细信息,请参阅Intent Docs Page。