Android 是否将ArrayList传递给另一个活动,但不显示结果?
这是我的第一个问题,所以对我放轻松:) 我是android新手,我正在尝试做一个简单的列表。在第一个活动中,用户可以输入数据,这些数据应在第二个活动中显示为列表 我使用意图将数据从一个活动传递到另一个活动,但我知道我在ClassB活动中遗漏了一些重要的内容,因为没有显示任何内容 这是我的主要代码:Android 是否将ArrayList传递给另一个活动,但不显示结果?,android,Android,这是我的第一个问题,所以对我放轻松:) 我是android新手,我正在尝试做一个简单的列表。在第一个活动中,用户可以输入数据,这些数据应在第二个活动中显示为列表 我使用意图将数据从一个活动传递到另一个活动,但我知道我在ClassB活动中遗漏了一些重要的内容,因为没有显示任何内容 这是我的主要代码: public class ClassA extends AppCompatActivity { EditText note; Button saveNoteB, goToNotesB
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);
}
});
公共类ClassA扩展了AppCompative活动{
编辑文本注释;
按钮saveNoteB,goToNotesB;
公共最终静态字符串EXTRA_NOTE=“com.lisa.currys.userlistary.NOTE”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
saveNoteB=(按钮)findviewbyd(R.id.saveNote);
saveNoteB.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向i=新意向(A类、本类、B类);
注释=(EditText)findViewById(R.id.note);
字符串userInput=note.getText().toString();
ArrayList arr=新的ArrayList();
arr.add(用户输入);
i、 putStringArrayListExtra(“注”,arr);
星触觉(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);
}
}
public类ClassB扩展了AppCompative活动{
公共静态android.widget.ListView displayNotes;
ArrayList arr=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
arr=getIntent().getExtras().getStringArrayList(ClassA.EXTRA_注释);
displayNotes=(ListView)findViewById(R.id.ListView);
Intent i=getIntent();
arr=i.getStringArrayListExtra(“注释”);
ArrayAdapter=新的ArrayAdapter(ClassB.this,android.R.layout.simple\u list\u item\u 1);
displayNotes.setAdapter(适配器);
}
}
任何指点或建议都是非常受欢迎的
谢谢。在ClassA中尝试以下方法:
i.putStringArrayListExtra(EXTRA_NOTE, arr);
arr = getIntent().getExtras().getStringArrayList("note");
或者在ClassB中尝试以下方法:
i.putStringArrayListExtra(EXTRA_NOTE, arr);
arr = getIntent().getExtras().getStringArrayList("note");
您必须使用相同的键来设置和获取值
顺便问一下,为什么要将值赋给“arr”两次?在ClassA中,请尝试以下方法:
i.putStringArrayListExtra(EXTRA_NOTE, arr);
arr = getIntent().getExtras().getStringArrayList("note");
或者在ClassB中尝试以下方法:
i.putStringArrayListExtra(EXTRA_NOTE, arr);
arr = getIntent().getExtras().getStringArrayList("note");
您必须使用相同的键来设置和获取值
顺便问一下,为什么要将值赋给“arr”两次?您从未实际将
arr
中的元素添加到ArrayAdapter
中。请使用ArrayAdapter
的三参数构造函数,如下所示,它将添加元素:
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr);
ArrayAdapter适配器=
新的ArrayAdapter(ClassB.this,android.R.layout.simple\u list\u item\u 1,arr);
您从未实际将arr
中的元素添加到ArrayAdapter
中。请使用ArrayAdapter
的三参数构造函数,如下所示,它将添加元素:
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(ClassB.this, android.R.layout.simple_list_item_1, arr);
ArrayAdapter适配器=
新的ArrayAdapter(ClassB.this,android.R.layout.simple\u list\u item\u 1,arr);
试试这个
ArrayAdapter=新的ArrayAdapter(ClassB.this,android.R.layout.simple\u list\u item\u 1);
在上面的语句中,您将传递数据所在的上下文和布局
显示但不提供存储的数据
在**arr**arraylist中,这样就不会显示任何内容。
将此语句替换为
阵列适配器=
新的ArrayAdapter(ClassB.this,android.R.layout.simple\u list\u item\u 1,arr);
试试这个
ArrayAdapter=新的ArrayAdapter(ClassB.this,android.R.layout.simple\u list\u item\u 1);
在上面的语句中,您将传递数据所在的上下文和布局
显示但不提供存储的数据
在**arr**arraylist中,这样就不会显示任何内容。
将此语句替换为
阵列适配器=
新的ArrayAdapter(ClassB.this,android.R.layout.simple\u list\u item\u 1,arr);
谢谢你找回ARP。是的,你说得对。我确实声明了两次arr。我取出了重复的一个并清理了一点。我尝试了上面两种方法,但似乎对我都不起作用。没有错误,但仍然无法显示。不过,下面的方法可以完成任务,再次感谢。谢谢你找回ARP。是的,你是right我确实声明了arr两次。我已经取出了重复的一个并清理了一点。我尝试了上面两种方法,但似乎对我都不起作用。没有错误,但仍然没有显示。下面的方法可以完成任务,再次感谢。是的,这非常有效。我没有注意到我错过了arr。可能是盯着我看太久了。非常感谢乔治·穆利根:)是的,这个很好用。我没有注意到我错过了聚会。可能盯着它看了太久。非常感谢乔治·穆利根:)