Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在其他活动中查找地址_Android_Eclipse_Google Maps_Android Activity_Geocoding - Fatal编程技术网

Android 在其他活动中查找地址

Android 在其他活动中查找地址,android,eclipse,google-maps,android-activity,geocoding,Android,Eclipse,Google Maps,Android Activity,Geocoding,我正在做一个谷歌地图应用程序。 我编写了一个函数来查找地址。 当我在主活动中编写代码时,这就是工作。 但当我在另一个活动中写作时。它总是强制关闭应用程序 出了什么问题,我如何解决 这是我的日志: 11-24 08:56:52.659: E/AndroidRuntime(16334): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.zzzzzz/com.example.zzzzzz.Di

我正在做一个谷歌地图应用程序。
我编写了一个函数来查找地址。
当我在主活动中编写代码时,这就是工作。
但当我在另一个活动中写作时。它总是强制关闭应用程序

出了什么问题,我如何解决

这是我的日志:

11-24 08:56:52.659: E/AndroidRuntime(16334): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.zzzzzz/com.example.zzzzzz.Direction}: java.lang.NullPointerException
这是我的主要活动代码查找地址:

        // find address
    final Geocoder geocoder = new Geocoder(MainActivity.this);

    final EditText ed = (EditText) findViewById(R.id.edAddress);
    Button btAddress = (Button) findViewById(R.id.btAddress);
    btAddress.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            String Ten = ed.getText().toString();
            try {
                List<Address> l = geocoder.getFromLocationName(Ten, 5);
                if (l != null && l.size() > 0) {
                    int lat = (int) (l.get(0).getLatitude() * 1000000);
                    int lon = (int) (l.get(0).getLongitude() * 1000000);
                    GeoPoint pt = new GeoPoint(lat, lon);

                    p = pt;
                    MapOverlay mar = new MapOverlay();
                    listOfOverlays.add(mar);

                    mv.getController().setZoom(17);
                    mv.getController().setCenter(pt);

                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                Log.v("Loi: ", "Loi 1 cua tui ne");
            }
        }
    });
这是我的指导活动:

public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
    case R.id.about:
        //about
        Intent about = new Intent("com.example.zzzzzz.About");
        startActivity(about);
        break;
    case R.id.setting:
        //setting
        Intent setting = new Intent("com.example.zzzzzz.Setting");
        startActivity(setting);
        break;
    case R.id.direction:
        //direction
        Intent direction = new Intent("com.example.zzzzzz.Direction");
        startActivity(direction);
        break;
    case R.id.MyLocation:
        //mylocation
        //Intent mylocation = new Intent("com.example.zzzzzz.MyLocation");
        //startActivity(mylocation);
        initLocationManagerV2();
        LocationManager locationManager;
        locationManager = (LocationManager)getSystemService (Context.LOCATION_SERVICE);
        Location location = locationManager.getLastKnownLocation (LocationManager.GPS_PROVIDER);
        double lat = location.getLatitude();
        double lng = location.getLongitude();
        GeoPoint find = new GeoPoint((int)(lat*1E6), (int)(lng*1E6));
        mv.getController().animateTo(find);
        mv.invalidate();
        break;
    }

    return false;
}
public class Direction extends Activity {

MainActivity maintest;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.direction);

    // find address
    final Geocoder geocoder = new Geocoder(maintest);

    final EditText edMylocation = (EditText) findViewById(R.id.edMylocation);
    final EditText edEndpoint = (EditText) findViewById(R.id.edEndpoint);
    Button btDirection = (Button) findViewById(R.id.btDirection);

    btDirection.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            String endpoint = edEndpoint.getText().toString();


            try {
                List<Address> l = geocoder.getFromLocationName(endpoint, 5);
                if (l != null && l.size() > 0) {
                    int lat = (int) (l.get(0).getLatitude() * 1000000);
                    int lon = (int) (l.get(0).getLongitude() * 1000000);
                    GeoPoint pt = new GeoPoint(lat, lon);

                    //p = pt;
                    //MapOverlay mar = new MapOverlay();
                    //listOfOverlays.add(mar);

                    maintest.mv.getController().setZoom(17);
                    //maintest.mv.getController().setCenter(pt);

                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                Log.v("Loi: ", "Loi 1 cua tui ne");
            }

        }
    });

}
公共类方向扩展活动{
主要活动主要测试;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(右布局方向);
//查找地址
最终地理编码器地理编码器=新地理编码器(主测试);
最终EditText edMylocation=(EditText)findViewById(R.id.edMylocation);
最终EditText edEndpoint=(EditText)findViewById(R.id.edEndpoint);
按钮btDirection=(按钮)findViewById(R.id.btDirection);
btDirection.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
字符串端点=edEndpoint.getText().toString();
试一试{
列表l=geocoder.getFromLocationName(端点,5);
如果(l!=null&&l.size()>0){
int lat=(int)(l.get(0.getLatitude()*1000000);
int lon=(int)(l.get(0.getLongitude()*1000000);
地质点pt=新的地质点(纬度、经度);
//p=pt;
//MapOverlay mar=新的MapOverlay();
//添加(mar);
maintest.mv.getController().setZoom(17);
//maintest.mv.getController().setCenter(pt);
}
}捕获(IOE异常){
//TODO自动生成的捕捉块
日志v(“意向书:”,“意向书1 cua tui ne”);
}
}
});
}
}

////////////////////////////////////// 这是我做的函数(AndylandDev):

activityresult上受保护的void(int-requestCode、int-resultCode、Intent-data){
if(requestCode==1&&resultCode==RESULT\u确定){
字符串端点=data.getStringExtra(“端点”);
最终地理编码器地理编码器=新地理编码器(MainActivity.this);
试一试{
列表l=geocoder.getFromLocationName(端点,5);
如果(l!=null&&l.size()>0){
int lat=(int)(l.get(0.getLatitude()*1000000);
int lon=(int)(l.get(0.getLongitude()*1000000);
地质点pt=新的地质点(纬度、经度);
p=pt;
//MapOverlay mar=新的MapOverlay();
//添加(mar);
mv.getController().setZoom(17);
mv.getController().setCenter(pt);
}
}捕获(IOE异常){
//TODO自动生成的捕捉块
日志v(“意向书:”,“意向书1 cua tui ne”);
}
}
}
所以

可能会引发NullPointerException,因为您的maintest变量为null。一般来说,活动不应该像这样彼此直接接触。这是正确的方法:

启动“方向”活动时:

case R.id.direction:
    //direction
    Intent direction = new Intent("com.example.zzzzzz.Direction");
    startActivityForResult(direction, 1);
    break;
在方向活动的onCreate()中

...

btDirection.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        Intent intent = new Intent();
        intent.putExtra("endpoint", edEndpoint.getText().toString());
        setResult(RESULT_OK, intent);
        finish();
});

...
然后将此方法添加到MainActivity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 1 && resultCode == RESULT_OK) {

    String endpoint = data.getStringExtra("endpoint");
    //do whatever with it
}

您的类名是什么?它在清单中是如何定义的?根据logcat,它实际上没有遵循推荐的命名约定。而且,这听起来像是活动在清单中没有正确定义,非常感谢!我试试看Di GET:11-24 13:26:53.969:E/AndroidRuntime(30137):java.lang.RuntimeException:无法实例化活动组件信息{com.example.zzzzzz/com.example.zzzzzzzz.MainActivity}:java.lang.NullPointerException立即!我把我的功能贴在问题的底部!你能帮我看看吗?嗨!我是初学者,你能发布整个堆栈跟踪吗?
...

btDirection.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        Intent intent = new Intent();
        intent.putExtra("endpoint", edEndpoint.getText().toString());
        setResult(RESULT_OK, intent);
        finish();
});

...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 1 && resultCode == RESULT_OK) {

    String endpoint = data.getStringExtra("endpoint");
    //do whatever with it
}