Android 是否将ArrayList传递给另一个活动,但不显示结果?

Android 是否将ArrayList传递给另一个活动,但不显示结果?,android,Android,这是我的第一个问题,所以对我放轻松:) 我是android新手,我正在尝试做一个简单的列表。在第一个活动中,用户可以输入数据,这些数据应在第二个活动中显示为列表 我使用意图将数据从一个活动传递到另一个活动,但我知道我在ClassB活动中遗漏了一些重要的内容,因为没有显示任何内容 这是我的主要代码: public class ClassA extends AppCompatActivity { EditText note; Button saveNoteB, goToNotesB

这是我的第一个问题,所以对我放轻松:) 我是android新手,我正在尝试做一个简单的列表。在第一个活动中,用户可以输入数据,这些数据应在第二个活动中显示为列表

我使用意图将数据从一个活动传递到另一个活动,但我知道我在ClassB活动中遗漏了一些重要的内容,因为没有显示任何内容

这是我的主要代码:

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。可能是盯着我看太久了。非常感谢乔治·穆利根:)是的,这个很好用。我没有注意到我错过了聚会。可能盯着它看了太久。非常感谢乔治·穆利根:)