使用intent和get方法时Android应用程序崩溃
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用intent和get方法时Android应用程序崩溃相关的知识,希望对你有一定的参考价值。
我是android编程的新手,我第一次尝试使用应用时遇到了问题。
我有两个活动。 ApplicazioneContattoActivity.java(主要的一个)和ModificaContattoActivity.java。
在第一个活动布局中,有三个textViews,其中包含姓名,姓氏和联系人的电话号码以及按钮。按下按钮时,应开始第二个活动。在第二个活动布局中,有三个editText应填充第一个活动的值。
值在具有intent和对象的活动之间传递。
问题是,当按下第一个活动中的按钮时,应用程序崩溃。错误在于:
campoNome.setText(contatto.getNome());
你能帮我找出问题所在吗?
非常感谢你!
第一项活动:
package com.example.applicazionecontatto;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.io.Serializable;
public class ApplicazioneContattoActivity extends AppCompatActivity {
Contatto mioContatto;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_applicazione_contatto);
Contatto mioContatto = new Contatto("Mario", "Rossi", "123456");
TextView nome = (TextView) this.findViewById(R.id.campoNome);
TextView cognome = (TextView) this.findViewById(R.id.campoCognome);
TextView numero = (TextView) this.findViewById(R.id.campoNumero);
nome.setText(mioContatto.getNome());
cognome.setText(mioContatto.getCognome());
numero.setText(mioContatto.getNumeroDiTelefono());
}
public void modifica(View button){
Intent intent = new Intent(this, ModificaContattoActivity.class);
String pkg = getPackageName();
intent.putExtra(pkg+".mioContatto", (Serializable) mioContatto);
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
String pkg = getPackageName();
mioContatto = (Contatto) data.getSerializableExtra(pkg+".nuovoContatto");
TextView nome = (TextView) this.findViewById(R.id.campoNome);
TextView cognome = (TextView) this.findViewById(R.id.campoCognome);
TextView numero = (TextView) this.findViewById(R.id.campoNumero);
nome.setText(mioContatto.getNome());
cognome.setText(mioContatto.getCognome());
numero.setText(mioContatto.getNumeroDiTelefono());
}
}
}
第二项活动:
package com.example.applicazionecontatto;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import java.io.Serializable;
public class ModificaContattoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.modifica_layout);
Intent intent = getIntent();
String pkg = getPackageName();
Contatto contatto = (Contatto) intent.getSerializableExtra(pkg + ".mioContatto");
EditText campoNome = (EditText) findViewById(R.id.EditText1);
EditText campoCognome = (EditText) findViewById(R.id.EditText2);
EditText campoNumero = (EditText) findViewById(R.id.EditText3);
campoNome.setText(contatto.getNome());
campoCognome.setText(contatto.getCognome());
campoNumero.setText(contatto.getNumeroDiTelefono());
}
public void conferma(View button){
EditText campoNome = (EditText) findViewById(R.id.EditText1);
EditText campoCognome = (EditText) findViewById(R.id.EditText2);
EditText campoNumero = (EditText) findViewById(R.id.EditText3);
String nome = campoNome.getText().toString();
String cognome = campoCognome.getText().toString();
String numero = campoNumero.getText().toString();
Contatto nuovoContatto = new Contatto(nome, cognome, numero);
Intent intent = new Intent();
String pkg = getPackageName();
intent.putExtra(pkg+".nuovoContatto", (Serializable)nuovoContatto);
setResult(RESULT_OK, intent);
finish();
}
}
班级联系人:
package com.example.applicazionecontatto;
import java.io.Serializable;
public class Contatto implements Serializable{
private String nome;
private String cognome;
private String numeroDiTelefono;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
public String getNumeroDiTelefono() {
return numeroDiTelefono;
}
public void setNumeroDiTelefono(String numeroDiTelefono) {
this.numeroDiTelefono = numeroDiTelefono;
}
public Contatto(String nome, String cognome, String numeroDiTelefono) {
super();
this.nome = nome;
this.cognome = cognome;
this.numeroDiTelefono = numeroDiTelefono;
}
}
以上是关于使用intent和get方法时Android应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Android中Intent具体解释之使用Intent广播事件及Broadcast Receiver简单介绍
——Parcelable接口的使用(跨进程,Intent传输)
Android 8.0 Notification和RemoteView简单使用