2012-06-01 1 views
1

방금 ​​첫 번째 앱을 작성하기 시작했습니다.
콘텐츠 (텍스트)를 가져오고 자하는 EditText 필드가 있습니다.
여러 필드로 새 클래스를 만들었습니다. 그 중 하나는 EditText 필드 내용의 대상입니다.
로컬 문자열 var을 만들고 다음과 같이 씁니다. (이름이 로컬 변수 인 경우)
name = (order_name.getText(). toString());
모든 것이 잘 작동합니다.
하지만 공용 문자열 필드가 포함 된 클래스를 만들려고 할 때 :
order.setName (order_name.getText(). toString());
FC가 있습니다.
나는 또한 값을 필드에서 직접 삽입을 시도하고 때 그 추락 내가 표시된대로 함수를 사용하여 시도했다.
클래스는 먼저 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에서 LINE 번호 (46)에 대한 코드는 무엇입니까? –

+0

코드를 게시하십시오. 충돌을 얻고있는 메소드 또는 코드 블록 ... 너무 모호한 그림입니다. – drulabs

+0

코드를 게시하여 도움을 드리겠습니다. – 113408

답변

1

는 메소드를 호출 할 수있는 실물이 없기 때문에 당신이 예외가 발생하므로, 아직 인스턴스화되지 않은 사용자의 order 변수에 setName를 실행하려고 에. onCreate 메소드에서 인스턴스를 생성하여 (생성자를 원하는대로 호출하여) 인스턴스를 생성하여 액티비티로 생성해야합니다 (클릭 할 때마다 order 객체를 새로 작성하고 onClickListener에서 인스턴스화하지 않는 한) 기능을 사용하지만 이름을 설정하기 전에 해당 기능이 있는지 확인하십시오.

+1

감사합니다. 작동합니다 :) – SagiLow

1

order 그것이 NPE을 제공하므로 널 (null)입니다 ... 당신은 initailize해야 그것은 첫째

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