这是我的第一个问题,所以对我很轻松:) 我是android新手,我正在尝试制作一个简单的列表。在第一个Activity上,用户可以输入数据,该数据应显示为第二个Activity上的列表。
我正在使用Intents将数据从一个Activity传递到另一个Activity,但我知道我在ClassB Activity中缺少一些关键内容,因为没有显示任何内容。
这是我的主要代码:
public class ClassA extends AppCompatActivity {
EditText note;
Button saveNoteB, goToNotesB;
public final static String EXTRA_NOTE = "com.lisa.currys.userlistarray.note";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
saveNoteB = (Button) findViewById(R.id.saveNote);
saveNoteB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(ClassA.this, ClassB.class);
note = (EditText) findViewById(R.id.note);
String userInput = note.getText().toString();
ArrayList<String> arr = new ArrayList<String>();
arr.add(userInput);
i.putStringArrayListExtra("note", arr);
startActivity(i);
}
});
和我的第二项活动:
public class ClassB extends AppCompatActivity {
public static android.widget.ListView displayNotes;
ArrayList<String> arr = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
arr = getIntent().getExtras().getStringArrayList(ClassA.EXTRA_NOTE);
displayNotes = (ListView)findViewById(R.id.listView);
Intent i = getIntent();
arr = i.getStringArrayListExtra("note");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1);
displayNotes.setAdapter(adapter);
}
}
欢迎任何指示或建议。
谢谢。
答案 0 :(得分:1)
在ClassA中试试这个:
i.putStringArrayListExtra(EXTRA_NOTE, arr);
或在ClassB中试试这个:
arr = getIntent().getExtras().getStringArrayList("note");
您必须使用相同的键来设置和获取值。
顺便说一下,为什么要为&#34; arr&#34;分配值?两次?
答案 1 :(得分:1)
您永远不会将arr
中的元素添加到ArrayAdapter
。使用ArrayAdapter
的三个参数构造函数,如下所示,它将添加元素:
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr);
答案 2 :(得分:0)
Try this
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1);
Above statement you are pass the context and layout in which your data
display but you are not give the data which is store
in your **arr** arraylist so you not show anything.
replace this statement to
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr);