Я только начал писать свое первое приложение.
У меня есть поле EditText, в котором я хочу получить его содержимое (текст)...
Я создал новый класс с несколькими полями, один из которых является целью для содержимого поля EditText.
Если я создаю локальную String var и записывает: (Когда name является локальным var.)
Name = (order_name.getText() ToString().);
Все работает отлично.
Но когда я пытаюсь использовать класс, который я создал, который содержит публичное поле String:
order.setName(. order_name.getText() ToString());
Я получаю FC.
Я также попробовал прямое вложение из значения в поле, и когда это произошло, я попытался использовать функцию set, как показано.
Класс был сначала создан с использованием мастера нового класса Eclipse, после чего я его воссоздал с помощью мастера AndroidManifest.xml.
Журнал :
06-01 17:06:42.104: E/AndroidRuntime(1190): FATAL EXCEPTION: main<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): java.lang.NullPointerException<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at com.Sagi.MyOrders.new_order_activity$1.onClick(new_order_activity.java:46)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at android.view.View.performClick(View.java:2408)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at android.view.View$PerformClick.run(View.java:8816)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at android.os.Handler.handleCallback(Handler.java:587)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at android.os.Handler.dispatchMessage(Handler.java:92)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at android.os.Looper.loop(Looper.java:123)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at android.app.ActivityThread.main(ActivityThread.java:4627)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at java.lang.reflect.Method.invokeNative(Native Method)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at java.lang.reflect.Method.invoke(Method.java:521)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)<br>
06-01 17:06:42.104: E/AndroidRuntime(1190): at dalvik.system.NativeStart.main(Native Method)
Спасибо, парни !
Код:
public class new_order_activity extends Activity {
DatabaseHelper DBHelper;
// LAYOUT VARS
Button saveButton,clearButton;
EditText order_name,link,price;
CheckBox paid,alert;
DatePicker date;
// LOCAL VARS
Order order;
String name1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_order_layout);
date = (DatePicker)findViewById(R.id.order_date_field);
alert = (CheckBox)findViewById(R.id.alert_checkbox);
paid = (CheckBox)findViewById(R.id.paid_checkbox);
price = (EditText)findViewById(R.id.price_field);
order_name = (EditText)findViewById(R.id.order_name_field);
link = (EditText)findViewById(R.id.link_field);
saveButton = (Button) findViewById(R.id.save_button);
clearButton = (Button) findViewById(R.id.clear_button);
DBHelper=new DatabaseHelper(this);
saveButton.setOnClickListener(
new View.OnClickListener() {
public void onClick(View view) {
Line46: **order.setName(order_name.getText().toString());**
order.link=link.getText().toString();
order.price=price.getText().toString();
order.paid=paid.isChecked();
order.alert=alert.isChecked();
order.year=date.getYear();
order.month=date.getMonth();
order.day=date.getDayOfMonth();
submitOrder(order);
}
});
Когда вы пытаетесь запустить setName
в своей переменной order
он еще не создан, поэтому он генерирует исключение, потому что у него нет фактического объекта для вызова метода. Вам нужно будет создать его экземпляр (вызовите его конструктор любым способом) в свой метод onCreate, чтобы он был создан с помощью Activity (если вы не хотите создавать новый объект order
каждый раз, когда вы нажимаете), а затем создайте его в своем onClickListener, но убедитесь, что это до того, как вы попытаетесь установить его имя).
order
равен нулю, поэтому он дает NPE... вы должны сначала инициализировать его
Order order = new Order();//initialize your class using new as per Order Constructor...
order.setName(order_name.getText().toString());