0

Google App Engine 1.7.7 にアップグレードして以来、Android アプリでエンティティ データを設定できません。nullpointer 例外エラーが発生します。以前のバージョンの GAE では、この問題はありませんでした。これが私のコードです

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 の問題ですか? これは大学での私の最後の年のプロジェクトであり、完了まであと数日しか残っていないため、これをできるだけ早く分類する必要があります:(

ありがとう

4

1 に答える 1

2

あなたは宣言していtracksます;

Tracks tracks;

...そしてそれを使用して...

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

...しかしnew Tracks()、クラスで初期化することはありません。saveTrackToCloudメソッドで次のように宣言します。

Tracks tracks = new Tracks();

...インスタンス変数は不要になったので削除します。変数が初期化されているかどうかを明確に確認できるように、変数をローカルに保持することをお勧めします。

于 2013-05-01T12:37:52.627 に答える