Я создаю приложение, которое частично создает контакт. У меня есть макет, где пользователь может ввести имя и адрес с помощью EditText. У меня есть класс с именем Контакты:Создание контакта в android
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, затем вызываю contact.getName (txtName); contact.getAddress (txtAddress) ;. Это правильно?
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
\t protected void onCreate(Bundle savedInstanceState){
\t \t super.onCreate(savedInstanceState);
\t \t setContentView(R.layout.contacts_make);
\t \t \t \t
\t \t back = (Button) findViewById(R.id.Make_Cancel);
\t \t make = (Button) findViewById(R.id.make_add);
\t \t txtName = (EditText)findViewById(R.id.make_Name);
\t \t txtAddress = (EditText)findViewById(R.id.make_Address);
\t \t
\t \t //Takes you back to the Contacts layout
back.setOnClickListener(new View.OnClickListener() {
\t
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), Contacts.class);
startActivityForResult(myIntent, 0);
}
});
make.setOnClickListener(new View.OnClickListener() {
\t
public void onClick(View view) {
\t contact.getName(txtName);
\t contact.getAddress(txtAddress);
}
});
\t }
}
import android.widget.EditText;
public class Contact{
\t private String _name, _address, _lat, _lng;
\t //private EditText txtName, txtAddress;
\t
\t public Contact (String name, String address, String Lat, String Long){
\t \t _name = name;
\t \t _address = address;
\t \t _lat = Lat;
\t \t _lng = Long;
\t }
\t public String getName(EditText name){
\t \t
\t \t if (name != null)
\t \t {
\t \t \t _name = name.getText().toString();
\t \t }
\t \t return _name;
\t }
\t
\t public String getAddress(EditText address){
\t \t
\t \t if (address != null)
\t \t {
\t \t \t _address = address.getText().toString();
\t \t }
\t \t return _address;
\t }
\t public String getLat(){
\t \t return _lat;
\t }
\t public String getLng(){
\t \t return _lng;
\t }
}
03-13 00: 25: 28,491: E/ресурсы (24776): RuntimeException
03-13 00:25: 28.491: E/Resources (24776): android.content.res.Resources $ NotFoundException: Идентификатор ресурса # 0x7f02029d
03-13 00: 25: 28,491: E/ресурсы (24776): в android.content.res.Resources.getValue (Resources.java:2333)
03-13 00: 25: 28.491: E/Resources (24776): at android.content.res.Resources.startRC (Resources.java:1059)
03-13 00: 25: 28.491: E/Resources (24776): at android.app.ActivityThread $ mRunnable.run (ActivityThread.java:2476)
03-13 00: 25: 28,491: E/Ресурсы (24776): в java.lang.Thread.run (Thread.java:818)
03-13 00: 26: 03.721: Е/AndroidRuntime (24776): неустранимый: Главный
03-13 00: 26: 03,721: Е/AndroidRuntime (24776): Процесс: edu.ecpi.myappv3, ПИД: 24776
03-13 00 : 26: 03.721: E/AndroidRuntime (24776): java.lang.NullPointerException: попытка вызвать виртуальный метод 'void edu.ecpi.myappv3.Contact.setName (android.widget.EditText)' на нулевой ссылке объекта
03-13 00: 26: 03,721: Е/AndroidRuntime (24776): в edu.ecpi.myappv3.Contacts_Make $ 2.onClick (Contacts_Make.java:53)
03-13 00: 26: 03,721: Е/AndroidRuntime (24776): на android.view.View.pe rformClick (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): at android.os.Handler.handleCallback (обработчик.Java: 739)
03-13 00: 26: 03,721: Е/AndroidRuntime (24776): в android.os.Handler.dispatchMessage (Handler.java:95)
03-13 00:26: 03.721: E/AndroidRuntime (24776): at android.os.Looper.loop (Looper.java:145)
03-13 00: 26: 03.721: E/AndroidRuntime (24776): at android.app.ActivityThread .main (ActivityThread.java:5837)
03-13 00: 26: 03,721: Е/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): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1388)
03-13 00: 26: 03.721: E/AndroidRuntime (24776): at com.android. internal.os.ZygoteInit.main (ZygoteInit.java:1183)
Я не уверен, что говорит этот журнал ошибок.
Ok @Fahim Я отредактировал мой код выше, чтобы ответить на ошибки, и он выглядит правильно, но он все еще не работает. Что вы думаете? – Hausfer
Какая ошибка? – Fahim
Хорошо, я добавил свой журнал ошибок, но это не значит для меня. Это единственная часть, которая выглядит так, как будто это может означать что-то, но я не уверен. «Попытка вызвать виртуальный метод» void edu.ecpi.myappv3.Contact.setName (android.widget.EditText) »в ссылке на нулевой объект» – Hausfer