java - 在此程序中,将 ArrayList 从一个 Activity 传递到另一个 Activity 不起作用

标签 java android

第一个 Activity :

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

  private Button bt1;
  private Button bt2;
  private EditText ed1;
  private EditText ed2;
  private TextView tv3;
  static ArrayList<String> s = new ArrayList<>();
  static ArrayList<Integer> i = new ArrayList<>();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    bt1 = (Button)findViewById(R.id.button);
    ed1 = (EditText) findViewById(R.id.editText);
    ed2 = (EditText)findViewById(R.id.editText2);
    bt2 = (Button)findViewById(R.id.button2);
    tv3 = (TextView)findViewById(R.id.textView3);

    bt2.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
         s.add(ed1.getText().toString());
         i.add(Integer.parseInt(ed2.getText().toString()));
       }
    });

    bt1.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
         try {
           Intent intent = new Intent(MainActivity.this, second.class);
           intent.putExtra("key", s);
           startActivity(intent);
         }
         catch(Exception e) {
           tv3.setText(e.getMessage());
         }
       }
    });
  }
}

第二个 Activity :

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.widget.TextView;
import java.util.ArrayList;

 public class second extends AppCompatActivity {

   private TextView tv1;
   private TextView tv2;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second);

    tv1 = (TextView)findViewById(R.id.textView);
    tv2 = (TextView)findViewById(R.id.textView2);

    ArrayList<String> s = (ArrayList<String>)getIntent().getSerializableExtra("key");
    for(int j=0;j<=s.size();j++) {
      tv1.setText(s.get(j));
    }
  }
}

我不明白这段代码中的问题。当我点击 bt2 将 ArrayList 从一个 Activity 传递到另一个 Activity 时,应用程序就关闭了。我无法理解这段代码中的问题。

请帮帮我,

我还更新了二等舱的 manifest.xml。

最佳答案

你确定吗

i.add(Integer.parseInt(ed2.getText().toString()));

在 onClick() 调用中没有抛出异常? 在 Listener.onClick() 中围绕您的代码使用 try-catch block 。

顺便说一句,您可以轻松地将 Lambda Exrpessions 用于 ActionListeners。 https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

关于java - 在此程序中,将 ArrayList 从一个 Activity 传递到另一个 Activity 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38497162/

相关文章:

安卓蓝牙耳机连接

android - 下载 sqlite 文件并在我的 android 应用程序中使用它

java - 实时游戏开发

java - 将 JSON 响应转换为 List<T>

java - MidiSystem.getSequencer() 很慢

java - 如何将 Java Web 应用程序部署到远程 Wildfly 服务器?

java - Parse.com 查询太慢,需要更快

java - 为 Zebra 设备开发 Android 应用程序

java - 应用程序在 Liberty 17.0.0.4 上停止运行(在 17.0.0.3 上运行)

Java 8 lambdas 多个过滤器调用