2011-02-02 49 views
1

我正在尝试将数据从一个页面传输到另一个页面,但下面是一些问题是代码。我试图从第一个活动到第二个活动使用捆绑的变量的值,但有些不对,请告诉我什么是错误的。下面如何将在一项活动中进行的输入转移到另一项活动?

是第一项活动: -

public class login extends Activity { 
/** Called when the activity is first created. */ 

Context mCtx; 
final static int START =0; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    mCtx = this; 


    Button btn = (Button)findViewById(R.id.btn); 

    btn.setOnClickListener(new OnClickListener(){ 

    // @Override 
    public void onClick(View v) 
    { 
     String fromLat = new String(); 
     String fromLong = new String(); 
     String toLat = new String(); 
     String toLong = new String(); 


     fromLat = ((EditText)findViewById(R.id.FromLatitude)).getText().toString(); 
     fromLong = ((EditText)findViewById(R.id.FromLongitude)).getText().toString(); 
     toLat = ((EditText)findViewById(R.id.ToLatitude)).getText().toString(); 
     toLong = ((EditText)findViewById(R.id.ToLongitude)).getText().toString(); 



     Intent intent = new Intent(mCtx, MapRouteActivity.class); 

     /*Sending some arguments*/ 
     Bundle bundle = new Bundle(4); 

      bundle.putString("fromLat",fromLat); 
      bundle.putString("fromLong",fromLong); 
      bundle.putString("toLat",toLat); 
      bundle.putString("toLong",toLong); 

      intent.putExtras(bundle); 

     /*Start Activity*/ 
     mCtx.startActivity(intent); 

     /*Start ActivityForResult*/ 
     ((Activity)mCtx).startActivityForResult(intent, 2); 
    } 
}); 
} 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode == START) 
    { 

     Toast.makeText(mCtx, Integer.toString(resultCode), Toast.LENGTH_SHORT).show(); 
    } 
} 


@Override 
public void onDestroy(){ 
    super.onDestroy(); 
    finish(); 
} 
} 

下面是第二个活动: -

public class MapRouteActivity extends MapActivity { 

    LinearLayout linearLayout; 
    MapView mapView; 
    private Road mRoad; 

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

      mapView = (MapView) findViewById(R.id.mapview); 
      mapView.setBuiltInZoomControls(true); 

      Bundle extras = this.getIntent().getExtras(); 
      String fLat=extras.getString("fromLat"); 
      String fLong=extras.getString("fromLong"); 
      String tLat=extras.getString("toLat"); 
      String tLong=extras.getString("toLong"); 

      final double fromLat=Double.parseDouble(fLat); 
      final double fromLon=Double.parseDouble(fLong); 
      final double toLat=Double.parseDouble(tLat); 
      final double toLon=Double.parseDouble(tLong); 




      new Thread() { 
        @Override 
        public void run() { 



          //double fromLat = 28.6353, fromLon = 77.2250, toLat = 30.7313, toLon = 76.7754; 
          /***url contains the path to fetch the kml file from the internet*/ 
          String url = RoadProvider 
              .getUrl(fromLat, fromLon, toLat, toLon); 
          InputStream is = getConnection(url); 
          mRoad = RoadProvider.getRoute(is); 
          mHandler.sendEmptyMessage(0); 
        } 
      }.start(); 
    } 

    Handler mHandler = new Handler() { 
      public void handleMessage(android.os.Message msg) { 
        TextView textView = (TextView) findViewById(R.id.description); 
        textView.setText(mRoad.mName + " " + mRoad.mDescription); 
        MapOverlay mapOverlay = new MapOverlay(mRoad, mapView); 
        List<Overlay> listOfOverlays = mapView.getOverlays(); 
        listOfOverlays.clear(); 
        listOfOverlays.add(mapOverlay); 
        mapView.invalidate(); 
      }; 
    }; 

    private InputStream getConnection(String url) { 
      InputStream is = null; 
      try { 
        //Opens a connection to the remote database(bidirectional) 
        URLConnection conn = new URL(url).openConnection(); 
        is = conn.getInputStream(); 
      } catch (MalformedURLException e) { 
        e.printStackTrace(); 
      } catch (IOException e) { 
        e.printStackTrace(); 
      } 
      return is; 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
      return false; 
    } 
} 

class MapOverlay extends com.google.android.maps.Overlay { 
    Road mRoad; 
    ArrayList<GeoPoint> mPoints; 

    public MapOverlay(Road road, MapView mv) { 
      mRoad = road; 
      if (road.mRoute.length > 0) { 
        mPoints = new ArrayList<GeoPoint>(); 
        for (int i = 0; i < road.mRoute.length; i++) { 
          mPoints.add(new GeoPoint((int) (road.mRoute[i][1] * 1000000), 
              (int) (road.mRoute[i][0] * 1000000))); 
        } 
        int moveToLat = (mPoints.get(0).getLatitudeE6() + (mPoints.get(
            mPoints.size() - 1).getLatitudeE6() - mPoints.get(0) 
            .getLatitudeE6())/2); 
        int moveToLong = (mPoints.get(0).getLongitudeE6() + (mPoints.get(
            mPoints.size() - 1).getLongitudeE6() - mPoints.get(0) 
            .getLongitudeE6())/2); 
        GeoPoint moveTo = new GeoPoint(moveToLat, moveToLong); 

        MapController mapController = mv.getController(); 
        mapController.animateTo(moveTo); 
        mapController.setZoom(9); 
      } 
    } 

    @Override 
    public boolean draw(Canvas canvas, MapView mv, boolean shadow, long when) { 
      super.draw(canvas, mv, shadow); 
      drawPath(mv, canvas); 
      return true; 
    } 

    public void drawPath(MapView mv, Canvas canvas) { 
      int x1 = -1, y1 = -1, x2 = -1, y2 = -1; 
      Paint paint = new Paint(); 
      paint.setColor(Color.GREEN); 
      paint.setStyle(Paint.Style.STROKE); 
      paint.setStrokeWidth(3); 
      for (int i = 0; i < mPoints.size(); i++) { 
        Point point = new Point(); 
        mv.getProjection().toPixels(mPoints.get(i), point); 
        x2 = point.x; 
        y2 = point.y; 
        if (i > 0) { 
          canvas.drawLine(x1, y1, x2, y2, paint); 
        } 
        x1 = x2; 
        y1 = y2; 
      } 
    } 

} 

在按下按钮的应用程序强制关闭。

下面是对力的logcat数据闭合所述线login.java 49应用

02-02 15:32:31.837: ERROR/AndroidRuntime(199): Uncaught handler: thread main exiting due to uncaught exception 
02-02 15:32:31.857: ERROR/AndroidRuntime(199): java.lang.NullPointerException 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at route.planning.login$1.onClick(login.java:49) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.view.View.performClick(View.java:2344) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.view.View.onTouchEvent(View.java:4133) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.widget.TextView.onTouchEvent(TextView.java:6504) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.view.View.dispatchTouchEvent(View.java:3672) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.app.Activity.dispatchTouchEvent(Activity.java:1987) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1658) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.os.Looper.loop(Looper.java:123) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at android.app.ActivityThread.main(ActivityThread.java:4203) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
02-02 15:32:31.857: ERROR/AndroidRuntime(199):  at dalvik.system.NativeStart.main(Native Method) 

回答

1

请告诉我?

几点建议:。类应该始终以大写字母开始,以便登录,而不是登录

+0

fromLat =((的EditText)findViewById(R.id.FromLatitude))的getText()的toString();这是在第49 – Prachur 2011-02-02 10:27:11

相关问题