我有一个Android程序即时编写的困难情况。所以..: 我在MainActivity中创建了一个GoogleMap对象(theMap)。然后我启动一个名为GetDirections的新Activity,它启动一个名为RequestDirection(Non-Activity)的新类。RequestDirection类执行Google Directions API请求并解析JSON结果创建一个PolylineOptions对象。那么我怎样才能访问GoogleMap对象(theMap)来添加折线? 示例代码:访问另一个类的MainActivity对象
public class MainActivity extends Activity {
public GoogleMap theMap;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationIcon=R.drawable.red_pin;
theMap=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
}}
public class GetDirections extends Activity{
//ask user to set Start/Destination Point
RequestDirection req= new RequestDirection();
req.execute();
finish();
}
public class RequestDirection extends AsyncTask {
doInBackground(){
//returns the json string
}
onPostExecute(){
PolylineOptions options= (the overview polyline points)
}
}
注意,所有的3类不nested.they是独立的文件
我可以用mainActivity上下文并将其传递到一个新的类,但现在我开始一个新的活动,我istantiate从那里上课。
我能做什么?我浪费了一整天,没有解决方案..
增加了对DST建议例外:
08-19 03:13:38.127: W/dalvikvm(1871): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
08-19 03:13:38.157: E/AndroidRuntime(1871): FATAL EXCEPTION: main
08-19 03:13:38.157: E/AndroidRuntime(1871): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {com.ceid.CeidMaps/com.ceid.CeidMaps.MainActivity}: java.lang.NullPointerException
08-19 03:13:38.157: E/AndroidRuntime(1871): at android.app.ActivityThread.deliverResults(ActivityThread.java:3141)
08-19 03:13:38.157: E/AndroidRuntime(1871): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3184)
08-19 03:13:38.157: E/AndroidRuntime(1871): at android.app.ActivityThread.access$1100(ActivityThread.java:130)
08-19 03:13:38.157: E/AndroidRuntime(1871): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
08-19 03:13:38.157: E/AndroidRuntime(1871): at android.os.Handler.dispatchMessage(Handler.java:99)
08-19 03:13:38.157: E/AndroidRuntime(1871): at android.os.Looper.loop(Looper.java:137)
08-19 03:13:38.157: E/AndroidRuntime(1871): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-19 03:13:38.157: E/AndroidRuntime(1871): at java.lang.reflect.Method.invokeNative(Native Method)
08-19 03:13:38.157: E/AndroidRuntime(1871): at java.lang.reflect.Method.invoke(Method.java:511)
08-19 03:13:38.157: E/AndroidRuntime(1871): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-19 03:13:38.157: E/AndroidRuntime(1871): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-19 03:13:38.157: E/AndroidRuntime(1871): at dalvik.system.NativeStart.main(Native Method)
08-19 03:13:38.157: E/AndroidRuntime(1871): Caused by: java.lang.NullPointerException
08-19 03:13:38.157: E/AndroidRuntime(1871): at com.ceid.CeidMaps.MainActivity.onActivityResult(MainActivity.java:162)
08-19 03:13:38.157: E/AndroidRuntime(1871): at android.app.Activity.dispatchActivityResult(Activity.java:5192)
08-19 03:13:38.157: E/AndroidRuntime(1871): at android.app.ActivityThread.deliverResults(ActivityThread.java:3137)
08-19 03:13:38.157: E/AndroidRuntime(1871): ... 11 more
哪一行是'MainActivity.java:162'? – dst
PolylineOptions opt = data.getParcelableExtra(“options”); 这是在OnActivityResult覆盖内 – GreekBurner
在这种情况下,'data'为空。验证结果代码是否与您在['setResult']中设置的结果代码相同(http://developer.android.com/reference/android/app/Activity.html#setResult%28int,%20android.content.Intent%29) ,并且你在那里设置的'Intent data'参数是非空的。 – dst