2012-09-27 32 views
0

嗨,大家好我是新来的机器人,我想做一个app.something像日常计划。 问题是这样的,我的应用程序打开,我有新的任务按钮,当我点击按钮添加一个新的任务应用程序崩溃。我搜索了类似的问题论坛,但无法获得帮助。我的Android应用程序崩溃,只要我想做一个新的任务

,这里是我的猫的日志文件:

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 

这是Android清单:

<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文件:

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; 
} 

和这是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

我不认为你需要导入android.R.string;行一旦删除线,并检查你是否得到任何线路上的任何错误 –

回答

1

设置内容视图后,只能使用findViewById。在访问它们之前将检查变量清空也很有用。最后,确保布局文件R.layout.new_task包含带有ids timeTxt,dateTxt和btnSave的项目。

我重新写了一些你的工作给你的我的意思的例子:

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 ..就是这样, 我只需要delcare时间文本和日期文本在创建之前和findview ...在创建之后,这就实现了, btw stnsave不是null,它只是没有有保存信息的代码,我会稍后添加它... thanx很多:) – user1704032

0

你有调用setContentView()后打电话到findViewById()onCreate()

相关问题