应用程序崩溃时,获取文本到新类var

问题描述:

我刚开始写我的第一个应用程序。
我有,我想它的内容(文本)的EditText场...
我已经创建了几个领域一个新的类,其中之一是对的EditText字段内容的目标。
如果我创建本地字符串var和写道:(当名称是局部变量。)
名称=(order_name.getText()的toString());
一切正常。
但是,当我尝试使用我创建了一个类,它包含一个公共字符串字段:(order_name.getText()的toString())
order.setName;
我得到一个FC。
我也尝试从值的字段直接插入,当崩溃时,我尝试使用set函数,如图所示。
该类首先使用Eclipse新类向导创建,然后使用AndroidManifest.xml向导重新创建该类。
应用程序崩溃时,获取文本到新类var

登录:

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); 
      } 
     }); 
+4

什么是你的new_order_activity.java线#46码? –

+0

发布代码....你得到崩溃的方法或代码块......它太模糊的图片。 – drulabs

+0

发布代码,我们可以帮助您... – 113408

当您尝试在你的order变量则还不实例运行setName,所以它抛出一个异常,因为它并没有一个实际的对象调用方法上。您需要在onCreate方法中实例化它(以您希望的任何方式调用其构造函数),以便使用Activity创建它(除非您希望每次单击时创建一个新的order对象),然后在onClickListener中实例化它函数,但在确定它的名称之前确保它是)。

+1

谢谢,它的作品:) – SagiLow

order是空,因此它给NPE ......你必须initailize首先

Order order = new Order();//initialize your class using new as per Order Constructor... 
order.setName(order_name.getText().toString());