2012-09-27 2 views
0

안녕 얘들 아, 안드로이드에 처음 왔어. 일일 플래너처럼 app.something을 만들고 싶다. 이 문제는 내 앱이 열리고 새로운 작업 버튼이 생겼습니다. 버튼을 눌러 앱이 다운되는 새로운 작업을 추가 할 수 있습니다. 나는 비슷한 문제에 대한 포럼을 수색했지만 도움을 얻을 수 없었다.내 새 앱을 만들 자마자 내 안드로이드 앱이 다운 됨

여기 내 고양이 로그 파일입니다 :

09-27 19:03:46.035: D/dalvikvm(19346): Late-enabling CheckJNI 

09-27 19:03:46.440: D/dalvikvm(19346): GC_FOR_ALLOC freed 136K, 4% free 12874K/13319K, paused 31ms 

09-27 19:03:46.440: I/dalvikvm-heap(19346): Grow heap (frag case) to 13.127MB for 379472-byte allocation 

09-27 19:03:46.465: D/dalvikvm(19346): GC_FOR_ALLOC freed 0K, 4% free 13245K/13703K, paused 20ms 

09-27 19:03:46.535: D/AbsListView(19346): Get MotionRecognitionManager 

09-27 19:03:49.510: D/CLIPBOARD(19346): Hide Clipboard dialog at Starting input: finished by someone else... ! 

09-27 19:03:53.625: D/AndroidRuntime(19346): Shutting down VM 

09-27 19:03:53.625: W/dalvikvm(19346): threadid=1: thread exiting with uncaught exception (group=0x40c5d1f8) 

09-27 19:03:53.635: E/AndroidRuntime(19346): FATAL EXCEPTION: main 

09-27 19:03:53.635: E/AndroidRuntime(19346): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.dailyplanner/com.example.dailyplanner.new_task}: java.lang.NullPointerException 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1894) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.app.ActivityThread.access$600(ActivityThread.java:128) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.os.Handler.dispatchMessage(Handler.java:99) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.os.Looper.loop(Looper.java:137) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.app.ActivityThread.main(ActivityThread.java:4514) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at java.lang.reflect.Method.invokeNative(Native Method) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at java.lang.reflect.Method.invoke(Method.java:511) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at dalvik.system.NativeStart.main(Native Method) 

09-27 19:03:53.635: E/AndroidRuntime(19346): Caused by: java.lang.NullPointerException 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.app.Activity.findViewById(Activity.java:1851) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at com.example.dailyplanner.new_task.<init>(new_task.java:19) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at java.lang.Class.newInstanceImpl(Native Method) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at java.lang.Class.newInstance(Class.java:1319) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.app.Instrumentation.newActivity(Instrumentation.java:1027) 

09-27 19:03:53.635: E/AndroidRuntime(19346): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1885) 

09-27 19:03:53.635: E/AndroidRuntime(19346): ... 11 more 

이 안드로이드 매니페스트입니다 :

package com.example.dailyplanner; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.database.sqlite.SQLiteDatabase; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends ListActivity { 





@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //SQLiteDatabase db = openOrCreateDatabase("MyDB", MODE_PRIVATE, null ); 
    //db.execSQL("CREATE TABLE IF NOT EXISTS Data1 (Id INT IDENTITY(1,1) NOT NULL, text VARCHAR, time TIME, date DATE)"); 



    Button nTaskBtn = (Button) findViewById(R.id.nTask); 
    nTaskBtn.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      Intent nTaskScreen = new Intent(getApplicationContext() , new_task.class); 



      startActivity(nTaskScreen); 



     } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

과 :

<manifest package="com.example.dailyplanner" 
android:versionName="1.0" xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1"> 

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Light.NoTitleBar" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" 
     android:screenOrientation="portrait" 
     android:configChanges="orientation|keyboardHidden"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".new_task"/> 
</application> 
여기

내 main.java 파일입니다 이것은 new_task.java f입니다. ile :

package com.example.dailyplanner; 

import android.R.string; 
import android.app.Activity; 
import android.app.Dialog; 
import android.app.TimePickerDialog; 
import android.net.UrlQuerySanitizer.ValueSanitizer; 
import android.os.Bundle; 
import android.renderscript.Sampler.Value; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.TimePicker; 

public class new_task extends Activity { 

static final int TIME_DIALOG_ID=0; 
final TextView timeText = (TextView) findViewById(R.id.timeTxt); 
TextView dateText = (TextView) findViewById(R.id.dateTxt); 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.new_task); 

    Button btnSave = (Button) findViewById(R.id.btnSave); 
    btnSave.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 




     } 
    }); 



    Button btnSetTime = (Button) findViewById(R.id.btnSetTime); 
    btnSetTime.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      showDialog(TIME_DIALOG_ID); 

     } 
     }); 
} 
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 

      public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
       timeText.setText(hourOfDay+":"+minute); 
       }; 

}; 
protected Dialog onCreateDialog(int id){ 
    switch(id){ 

    case TIME_DIALOG_ID: 
    return new TimePickerDialog(this, mTimeSetListener, 0, 0, true); 

    } 
    return null; 

} 

어떤 도움이 필요합니까?

+0

이것은 살펴볼 코드가 많기 때문에 문제의 범위를 좁히려 할 수 있습니까? – Thousand

+0

나는 코드가 많다.하지만 그 문제는, 나는 내 코드에서 어떤 오류도 볼 수 없으므로 로그 고양이에서 그것을 좁힐 수있다. 나는 그 nullpointerexeption을 너무 들여다 볼 수 있지만, , 그리고 나는 정말로 무엇을 잘못하고 있는지 알지 못한다 : S – user1704032

+0

나는 당신이 import해야한다고 생각하지 않는다. android.R.string; 줄을 한 번 제거하고 아무 줄에 오류가 있는지 확인하십시오 –

답변

1

콘텐츠 뷰를 설정 한 후에 만 ​​findViewById를 사용할 수 있습니다. 또한 변수에 액세스하기 전에 변수를 확인하는 것이 유용합니다. 마지막으로, 레이아웃 파일 R.layout.new_task에 id가 timeTxt, dateTxt, btnSave 인 항목이 포함되어 있는지 확인하십시오. 당신은setContentView()에 대한 호출 후 onCreate()findViewById() 전화를해야

private TextView timeText; 
private TextView dateText; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.new_task); 

    timeText = (TextView) findViewById(R.id.timeTxt); 
    dateText = (TextView) findViewById(R.id.dateTxt); 

    Button btnSave = (Button) findViewById(R.id.btnSave); 
    if (btnSave != null) { 
     btnSave.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
      } 
     }); 
    } else { 
     Log.e("MyActivity", "btnSave was null :("); 
    } 
} 
+0

thnx jimmyyy! : D..that, 나는 timetext와 데이트 텍스트를 작성하기 전에 del find하고 findview를 써야했습니다 ... oncreate 후, 그 트릭을했습니다. btw stnsave는 null이 아니 었습니다. 정보를 저장하는 코드가 있습니다. 나중에 추가 할 예정입니다 ... 고맙습니다. :) – user1704032

0

:

나는 작업의 일부는 당신이 무슨 뜻인지의 예를 제공하기 위해 다시 썼다.

관련 문제