2013-05-01 116 views
0

自从我升级到谷歌应用程序引擎1.7.7我无法在我的Android应用程序上设置我的实体数据。我收到一个空指针异常错误。在以前的GAE版本中,我没有遇到这个问题。这里是我的代码谷歌App Engine 1.7.7问题

public class SaveTrackActivity extends Activity { 

    static String TAG = "SaveTrackActivity"; 

    Tracksendpoint endpoint; 
    private TrackRateApp trackapp; 
    private EditText etTrackName; 
    private EditText etTrackDes; 
    private ImageView ivTrackPic; 
    Bitmap trackImage; 
    Tracks tracks; 
    int numBackEndTasks; 

    String encodedImage; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_save_track); 
     initialize(); 
     Intent saveTrackIntent = getIntent(); 
     trackImage = (Bitmap)saveTrackIntent.getParcelableExtra("BitMapImage"); 
     ivTrackPic.setImageBitmap(trackImage); 

    } 

    private void initialize() { 
     trackapp = (TrackRateApp)getApplication(); 
     endpoint = trackapp.getEndpoint(); 
     etTrackName = (EditText) findViewById(R.id.etTrackName); 
     etTrackDes = (EditText) findViewById(R.id.edTrackDescr); 
     ivTrackPic = (ImageView) findViewById(R.id.trackImage); 
    } 

    public void saveTrackToCloud(View v){ 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     trackImage.compress(Bitmap.CompressFormat.PNG, 100 , baos);  
     byte[] b = baos.toByteArray(); 
     encodedImage = Base64.encodeToString(b, Base64.DEFAULT); 
     Log.d(TAG, "GeopointArray size is: " + trackapp.getGeoPtArray().size()); 

     tracks.setTrackName(String.valueOf(etTrackName.getText())); 
     tracks.setTrackDescription(String.valueOf(etTrackDes.getText())); 
     tracks.setTrackImage(encodedImage); 
     tracks.setRoute(trackapp.getGeoPtArray()); 
     addTracks(tracks); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.save_track, menu); 
     return true; 
    } 

    public void addTracks(Tracks tracks) { 
     new AsyncAddTrack(this).execute(tracks); 
    } 
} 

当我尝试设置数据tracks.setTrackName(String.valueOf(etTrackName.getText())); tracks.setTrackDescription(String.valueOf(etTrackDes.getText())); tracks.setTrackImage(encodedImage); tracks.setRoute(trackapp.getGeoPtArray());

的问题出现了,我得到这个错误

05-01 12:41:19.522: E/AndroidRuntime(6858): FATAL EXCEPTION: main 
05-01 12:41:19.522: E/AndroidRuntime(6858): java.lang.IllegalStateException: Could not execute method of the activity 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at android.view.View$1.onClick(View.java:3691) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at android.view.View.performClick(View.java:4211) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at android.view.View$PerformClick.run(View.java:17267) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at android.os.Handler.handleCallback(Handler.java:615) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at android.os.Looper.loop(Looper.java:137) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at android.app.ActivityThread.main(ActivityThread.java:4898) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at dalvik.system.NativeStart.main(Native Method) 
05-01 12:41:19.522: E/AndroidRuntime(6858): Caused by: java.lang.reflect.InvocationTargetException 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at android.view.View$1.onClick(View.java:3686) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  ... 11 more 
05-01 12:41:19.522: E/AndroidRuntime(6858): Caused by: java.lang.NullPointerException 
05-01 12:41:19.522: E/AndroidRuntime(6858):  at com.jman.trackrate.SaveTrackActivity.saveTrackToCloud(SaveTrackActivity.java:60) 
05-01 12:41:19.522: E/AndroidRuntime(6858):  ... 14 more 

任何帮助或这是一个已知的GAE的问题? 我需要,因为这是在大学的最后一年的项目尽快此排序,我只有一两天即可完成:(

感谢

+0

你没有包含所有的文件,那么哪一行是第60行? – 2013-05-01 12:10:32

+0

感谢您的回复。第60行是tracks.setTrackName(String.valueOf(etTrackName.getText())); Emortal 2013-05-01 12:31:42

回答

2

你声明tracks;

Tracks tracks; 

...并使用它......

tracks.setTrackName(String.valueOf(etTrackName.getText())); 

...但从来没有在课堂上与new Tracks()初始化它。我会宣布它,我方法为saveTrackToCloud;

Tracks tracks = new Tracks(); 

...并删除实例变量,因为它不再需要。最好让你的变量保持在本地,这样你可以清楚地看到它们是否被初始化。

+0

我不能相信我没有注意到这一点。我现在正在用额头拍我的手!非常感谢你 – Emortal 2013-05-01 12:44:47