在 android 中创建联系人
Creating a contact in android
我正在创建一个应用程序,该应用程序在一定程度上创建了一个联系人。我有一个布局,用户可以在其中使用 EditText 输入姓名和地址。我有一个 class 联系人:
public class Contact extends Activity{
private String _name, _address, _lat, _lng;
private EditText txtName, txtAddress;
public Contact (String name, String address, String Lat, String Long){
_name = name;
_address = address;
}
public String getName(){
txtName = (EditText)findViewById(R.id.make_Name);
if (txtName != null)
{
_name = txtName.getText().toString();
}
return _name;
}
public String getAddress(){
txtAddress = (EditText)findViewById(R.id.make_Name);
if (txtAddress != null)
{
_address = txtAddress.getText().toString();
}
return _address;
}
}
布局有一个按钮,应该获取名称和地址
public class Contacts_Make extends Activity{
private Button make;
Context context;
private Contact contact;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts_make);
make = (Button) findViewById(R.id.make_add);
make.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
try {
contact.getName();
Toast.makeText(context, name, Toast.LENGTH_SHORT).show();
} catch (Throwable e){
Toast.makeText(context, ""+e, Toast.LENGTH_SHORT).show();
}
try {
contact.getAddress();
Toast.makeText(context, address, Toast.LENGTH_SHORT).show();
} catch (Throwable e){
Toast.makeText(context, ""+e, Toast.LENGTH_SHORT).show();
}
}
});
}
}
每次我按下按钮时,我的应用程序都会停止工作,而且我从来没有得到任何祝酒词,但如果我做了一些事情,比如移动到不同的布局(已知好的代码),按钮就会起作用。
有什么想法吗?
更新:
谢谢@Fahim,我在下面更改了我的代码,我更喜欢它。现在我将 EditText 传递给 get,这对我来说很有意义,但它仍然无法正常工作。我只是停下来。哦,我确实初始化了 Contacts_Make class 顶部附近的联系人,然后调用 contact.getName(txtName); contact.getAddress(txt地址);.这样对吗?
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Contacts_Make extends Activity{
private Button back;
private Button make;
private EditText txtName;
private EditText txtAddress;
Context context;
private Contact contact;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts_make);
back = (Button) findViewById(R.id.Make_Cancel);
make = (Button) findViewById(R.id.make_add);
txtName = (EditText)findViewById(R.id.make_Name);
txtAddress = (EditText)findViewById(R.id.make_Address);
//Takes you back to the Contacts layout
back.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), Contacts.class);
startActivityForResult(myIntent, 0);
}
});
make.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
contact.getName(txtName);
contact.getAddress(txtAddress);
}
});
}
}
import android.widget.EditText;
public class Contact{
private String _name, _address, _lat, _lng;
//private EditText txtName, txtAddress;
public Contact (String name, String address, String Lat, String Long){
_name = name;
_address = address;
_lat = Lat;
_lng = Long;
}
public String getName(EditText name){
if (name != null)
{
_name = name.getText().toString();
}
return _name;
}
public String getAddress(EditText address){
if (address != null)
{
_address = address.getText().toString();
}
return _address;
}
public String getLat(){
return _lat;
}
public String getLng(){
return _lng;
}
}
03-13 00:25:28.491: E/Resources(24776): RunTimeException
03-13 00:25:28.491: E/Resources(24776): android.content.res.Resources$NotFoundException: 资源 ID #0x7f02029d
03-13 00:25:28.491: E/Resources(24776): 在 android.content.res.Resources.getValue(Resources.java:2333)
03-13 00:25:28.491: E/Resources(24776): 在 android.content.res.Resources.startRC(Resources.java:1059)
03-13 00:25:28.491: E/Resources(24776): 在 android.app.ActivityThread$mRunnable.run(ActivityThread.java:2476)
03-13 00:25:28.491: E/Resources(24776): 在 java.lang.Thread.run(Thread.java:818)
03-13 00:26:03.721:E/AndroidRuntime(24776):致命异常:main
03-13 00:26:03.721: E/AndroidRuntime(24776): 进程: edu.ecpi.myappv3, PID: 24776
03-13 00:26:03.721:E/AndroidRuntime(24776):java.lang.NullPointerException:尝试在空对象引用[=15= 上调用虚拟方法'void edu.ecpi.myappv3.Contact.setName(android.widget.EditText)' ]
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 edu.ecpi.myappv3.Contacts_Make$2.onClick(Contacts_Make.java: 53)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.view.View.performClick(View.java:5162)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.view.View$PerformClick.run(View.java:20873)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.os.Handler.handleCallback(Handler.java:739)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.os.Handler.dispatchMessage(Handler.java:95)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.os.Looper.loop(Looper.java:145)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.app.ActivityThread.main(ActivityThread.java:5837)
03-13 00:26:03.721:E/AndroidRuntime(24776):在 java.lang.reflect.Method.invoke(本机方法)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 java.lang.reflect.Method.invoke(Method.java:372)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
我不确定这个错误日志在说什么。
你能给我们提出的异常吗?
你在哪里初始化你的 contact
属性?您试图在没有实例化联系人的情况下调用 .getName()
,或者缺少某些代码?
你说当你把按钮移到另一个布局时它会起作用。您确定 R.layout.contacts_make
布局有一个由 R.id.make_add
标识的按钮吗?
你犯了以下错误
你没有初始化联系人对象,直接调用了contact.getname()方法。这里这个方法抛出 NullPointerException.
您的 class 联系人应该是正常的 class,不应扩展 Activity。您必须将编辑文本代码从它移动到 contact_make activity。
感谢@Fahim 和大家的帮助。看了又看,我终于明白我必须为我的联系人 class private Contact contact = new Contact(null, null, null);
创建一个新的瞬间。我根据一些 simalare 代码更改了一些代码并得到了这个:
import com.google.android.gms.maps.model.LatLng;
import android.widget.EditText;
public class Contact{
public String _name, _address;
public LatLng _latlng;
public Contact (String _name, String _address, LatLng _latlng){
this.setName(_name);
this.setAddress(_address);
this.setLatLng(_latlng);
}
public String etToSt (EditText _editText){
String test = _editText.getText().toString();
return test;
}
public void setName(String _name){
this._name = _name;
}
public String getName(){
return _name;
}
public void setAddress(String _address){
this._address = _address;
}
public String getAddress(){
return _address;
}
public void setLatLng(LatLng _latlng){
this._latlng = _latlng;
}
public LatLng getLng(){
return _latlng;
}
}
然后我只需要在此处添加这段代码。
make.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
String _name = (String) txtName.getText().toString();
String _address = (String) txtAddress.getText().toString();
contact.setName(_name);
contact.setAddress(_address);
}
});
希望这对其他人有帮助
我正在创建一个应用程序,该应用程序在一定程度上创建了一个联系人。我有一个布局,用户可以在其中使用 EditText 输入姓名和地址。我有一个 class 联系人:
public class Contact extends Activity{
private String _name, _address, _lat, _lng;
private EditText txtName, txtAddress;
public Contact (String name, String address, String Lat, String Long){
_name = name;
_address = address;
}
public String getName(){
txtName = (EditText)findViewById(R.id.make_Name);
if (txtName != null)
{
_name = txtName.getText().toString();
}
return _name;
}
public String getAddress(){
txtAddress = (EditText)findViewById(R.id.make_Name);
if (txtAddress != null)
{
_address = txtAddress.getText().toString();
}
return _address;
}
}
布局有一个按钮,应该获取名称和地址
public class Contacts_Make extends Activity{
private Button make;
Context context;
private Contact contact;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts_make);
make = (Button) findViewById(R.id.make_add);
make.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
try {
contact.getName();
Toast.makeText(context, name, Toast.LENGTH_SHORT).show();
} catch (Throwable e){
Toast.makeText(context, ""+e, Toast.LENGTH_SHORT).show();
}
try {
contact.getAddress();
Toast.makeText(context, address, Toast.LENGTH_SHORT).show();
} catch (Throwable e){
Toast.makeText(context, ""+e, Toast.LENGTH_SHORT).show();
}
}
});
}
}
每次我按下按钮时,我的应用程序都会停止工作,而且我从来没有得到任何祝酒词,但如果我做了一些事情,比如移动到不同的布局(已知好的代码),按钮就会起作用。 有什么想法吗?
更新: 谢谢@Fahim,我在下面更改了我的代码,我更喜欢它。现在我将 EditText 传递给 get,这对我来说很有意义,但它仍然无法正常工作。我只是停下来。哦,我确实初始化了 Contacts_Make class 顶部附近的联系人,然后调用 contact.getName(txtName); contact.getAddress(txt地址);.这样对吗?
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Contacts_Make extends Activity{
private Button back;
private Button make;
private EditText txtName;
private EditText txtAddress;
Context context;
private Contact contact;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts_make);
back = (Button) findViewById(R.id.Make_Cancel);
make = (Button) findViewById(R.id.make_add);
txtName = (EditText)findViewById(R.id.make_Name);
txtAddress = (EditText)findViewById(R.id.make_Address);
//Takes you back to the Contacts layout
back.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), Contacts.class);
startActivityForResult(myIntent, 0);
}
});
make.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
contact.getName(txtName);
contact.getAddress(txtAddress);
}
});
}
}
import android.widget.EditText;
public class Contact{
private String _name, _address, _lat, _lng;
//private EditText txtName, txtAddress;
public Contact (String name, String address, String Lat, String Long){
_name = name;
_address = address;
_lat = Lat;
_lng = Long;
}
public String getName(EditText name){
if (name != null)
{
_name = name.getText().toString();
}
return _name;
}
public String getAddress(EditText address){
if (address != null)
{
_address = address.getText().toString();
}
return _address;
}
public String getLat(){
return _lat;
}
public String getLng(){
return _lng;
}
}
03-13 00:25:28.491: E/Resources(24776): RunTimeException
03-13 00:25:28.491: E/Resources(24776): android.content.res.Resources$NotFoundException: 资源 ID #0x7f02029d
03-13 00:25:28.491: E/Resources(24776): 在 android.content.res.Resources.getValue(Resources.java:2333)
03-13 00:25:28.491: E/Resources(24776): 在 android.content.res.Resources.startRC(Resources.java:1059)
03-13 00:25:28.491: E/Resources(24776): 在 android.app.ActivityThread$mRunnable.run(ActivityThread.java:2476)
03-13 00:25:28.491: E/Resources(24776): 在 java.lang.Thread.run(Thread.java:818)
03-13 00:26:03.721:E/AndroidRuntime(24776):致命异常:main
03-13 00:26:03.721: E/AndroidRuntime(24776): 进程: edu.ecpi.myappv3, PID: 24776
03-13 00:26:03.721:E/AndroidRuntime(24776):java.lang.NullPointerException:尝试在空对象引用[=15= 上调用虚拟方法'void edu.ecpi.myappv3.Contact.setName(android.widget.EditText)' ]
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 edu.ecpi.myappv3.Contacts_Make$2.onClick(Contacts_Make.java: 53)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.view.View.performClick(View.java:5162)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.view.View$PerformClick.run(View.java:20873)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.os.Handler.handleCallback(Handler.java:739)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.os.Handler.dispatchMessage(Handler.java:95)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.os.Looper.loop(Looper.java:145)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 android.app.ActivityThread.main(ActivityThread.java:5837)
03-13 00:26:03.721:E/AndroidRuntime(24776):在 java.lang.reflect.Method.invoke(本机方法)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 java.lang.reflect.Method.invoke(Method.java:372)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
03-13 00:26:03.721: E/AndroidRuntime(24776): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
我不确定这个错误日志在说什么。
你能给我们提出的异常吗?
你在哪里初始化你的 contact
属性?您试图在没有实例化联系人的情况下调用 .getName()
,或者缺少某些代码?
你说当你把按钮移到另一个布局时它会起作用。您确定 R.layout.contacts_make
布局有一个由 R.id.make_add
标识的按钮吗?
你犯了以下错误
你没有初始化联系人对象,直接调用了contact.getname()方法。这里这个方法抛出 NullPointerException.
您的 class 联系人应该是正常的 class,不应扩展 Activity。您必须将编辑文本代码从它移动到 contact_make activity。
感谢@Fahim 和大家的帮助。看了又看,我终于明白我必须为我的联系人 class private Contact contact = new Contact(null, null, null);
创建一个新的瞬间。我根据一些 simalare 代码更改了一些代码并得到了这个:
import com.google.android.gms.maps.model.LatLng;
import android.widget.EditText;
public class Contact{
public String _name, _address;
public LatLng _latlng;
public Contact (String _name, String _address, LatLng _latlng){
this.setName(_name);
this.setAddress(_address);
this.setLatLng(_latlng);
}
public String etToSt (EditText _editText){
String test = _editText.getText().toString();
return test;
}
public void setName(String _name){
this._name = _name;
}
public String getName(){
return _name;
}
public void setAddress(String _address){
this._address = _address;
}
public String getAddress(){
return _address;
}
public void setLatLng(LatLng _latlng){
this._latlng = _latlng;
}
public LatLng getLng(){
return _latlng;
}
}
然后我只需要在此处添加这段代码。
make.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
String _name = (String) txtName.getText().toString();
String _address = (String) txtAddress.getText().toString();
contact.setName(_name);
contact.setAddress(_address);
}
});