首页 > 解决方案 > 在两个活动之间传递一个类实例Android

问题描述

我想制作一个从第一个活动获取用户输入并将这些值设置为一个类并在另一个活动中显示它们的应用程序。

当我尝试获取第二类中的值时,我遇到的错误是空指针异常。我不明白我做错了什么。

这是第一个活动:

public class MainActivity extends Activity {

EditText name, phone, type;
Button addBtn;
public final static String SER_KEY = "com.easyinfogeek.objectPass.ser";
public final static String Tag = "Yes";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    addBtn = findViewById(R.id.button);
    addBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           SerializeMethod();
        }
    });
}

public void SerializeMethod(){

    name = findViewById(R.id.name);
    phone = findViewById(R.id.phone);
    type = findViewById(R.id.type);

    PhoneBookEntry book = new PhoneBookEntry();
    book.setName(name.toString());
    book.setPhone(phone.toString());
    book.setType(type.toString());

    Intent intent = new Intent(this, SecondActivity.class);
    Bundle bundle = new Bundle();
    bundle.putSerializable(SER_KEY, book);
     startActivity(intent);
 }
}

第二个活动:

public class SecondActivity extends Activity {

final public static String Tag = "Yes";
TextView txt1, txt2, txt3;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    txt1 = findViewById(R.id.textView1);
    txt2 = findViewById(R.id.textView2);
    txt3 = findViewById(R.id.textView3);


    PhoneBookEntry book = (PhoneBookEntry) getIntent().getSerializableExtra(MainActivity.SER_KEY);


    txt1.setText(book.getName());
    txt2.setText(book.getPhone());
    txt3.setText(book.getType());


  }
}

这是 PhoneBookEntry 类:

public class PhoneBookEntry implements Serializable {
 private static final long serialVersionUID = -7060210544600464481L;
 private String name;
 private String phone;
 private String type;

--- getters and setters --- 
}

标签: javaandroid

解决方案


您只是忘记再次添加Bundle您的Intent检查代码

只需添加您BundleIntent使用intent.putExtras(mBundle);它就可以正常工作

尝试这个

Intent intent = new Intent(this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable(SER_KEY, book);
intent.putExtras(mBundle);
startActivity(intent);

推荐阅读