向数据库发送纬度和经度时,Android空指针异常

科伦坡

我正在做一个简单的Android应用程序来存储纬度和经度的mysql数据库。我已经创建了一个本地数据库.databse有3个字段ID是自动递增的,两个字段为lat2(float)和lng2(float)来存储来自android的值。

这是我的logcat错误

  12-28 16:45:04.470: D/gralloc_goldfish(1400): Emulator without GPU emulation detected.
12-28 16:45:11.190: D/AndroidRuntime(1400): Shutting down VM
12-28 16:45:11.190: W/dalvikvm(1400): threadid=1: thread exiting with uncaught exception (group=0xb3a71ba8)
12-28 16:45:11.320: E/AndroidRuntime(1400): FATAL EXCEPTION: main
12-28 16:45:11.320: E/AndroidRuntime(1400): Process: com.example.test, PID: 1400
12-28 16:45:11.320: E/AndroidRuntime(1400): java.lang.NullPointerException
12-28 16:45:11.320: E/AndroidRuntime(1400):     at com.example.test.MainActivity$1.onClick(MainActivity.java:51)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at android.view.View.performClick(View.java:4438)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at android.view.View$PerformClick.run(View.java:18422)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at android.os.Handler.handleCallback(Handler.java:733)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at android.os.Handler.dispatchMessage(Handler.java:95)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at android.os.Looper.loop(Looper.java:136)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at android.app.ActivityThread.main(ActivityThread.java:5001)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at java.lang.reflect.Method.invokeNative(Native Method)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at java.lang.reflect.Method.invoke(Method.java:515)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
12-28 16:45:11.320: E/AndroidRuntime(1400):     at dalvik.system.NativeStart.main(Native Method)
12-28 16:45:17.380: I/Process(1400): Sending signal. PID: 1400 SIG: 9

这是我的主要活动

    package com.example.test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {


    private float lat;
    private float lng;
    private String lat2;
    private String lng2;
    MainActivity gps;
    private String line;
    Button btninsert;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);


          btninsert = (Button) findViewById(R.id.button1);
          btninsert.setOnClickListener(new View.OnClickListener() {

          @Override
                public void onClick(View v) {

                    // TODO Auto-generated method stub
                    if(gps.canGetLocation()){   
                     lat = (float) gps.getLatitude();
                     lng = (float) gps.getLongitude();
                     lat2= String.valueOf(lat);
                     lng2= String.valueOf(lng);




        Toast.makeText(getApplicationContext(), "Success insert - \nLat: " + lat2 + "\nLong: " + lng2, Toast.LENGTH_LONG).show();   
                }else{
                    // can't get location
                    // GPS or Network is not enabled
                    // Ask user to enable GPS/network in settings
                    gps.showSettingsAlert();
                }
                }});
        }


        protected void showSettingsAlert() {
        // TODO Auto-generated method stub

    }


        protected float getLatitude() {
        // TODO Auto-generated method stub
        return 0;
    }
        protected float getLongitude() {
            // TODO Auto-generated method stub
            return 0;
        }


        protected boolean canGetLocation() {
        // TODO Auto-generated method stub
        return false;
    }


        public void insert(String result, String lat2,String lng2) {
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

            nameValuePairs.add(new BasicNameValuePair("lat2", lat2));
            nameValuePairs.add(new BasicNameValuePair("lng2", lng2));

            InputStream is = null;
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://192.168.1.31/insert_android.php");
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
                Log.e("pass 1", "connection success ");
            } catch (Exception e) {
                Log.e("Fail 1", e.toString());
                Toast.makeText(getApplicationContext(), "Invalid IP Address",
                        Toast.LENGTH_LONG).show();
            }

            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                result = sb.toString();
                Log.e("pass 2", "connection success ");
            } catch (Exception e) {
                Log.e("Fail 2", e.toString());
            }

            try {
                JSONObject json_data = new JSONObject(result);
                lng2 = (json_data.getString("code"));

                if (lng2 == null) {
                    Toast.makeText(getBaseContext(), "Inserted Successfully",
                            Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getBaseContext(), "Sorry, Try Again",
                            Toast.LENGTH_LONG).show();
                }
            } catch (Exception e) {
                Log.e("Fail 3", e.toString());
            }
        }

}

这是我的PHP脚本

<?php

$hostname = 'localhost';
$username = 'root';
$password = '';

$conn =  mysql_connect($hostname,$username,$password) or die('Blah');

if ($conn) {

mysql_select_db("test", $conn);

// extract your data
if (isset($_POST['lat']) && isset($_POST['lng']) ){


$lat2 = $_POST['lat'];
$lng2 = $_POST['lng'];



        $query2 = "INSERT INTO markers_awal VALUES('','$lat2','$lng2')";

    if (mysql_query($query2, $conn))
    echo "data inserted";
    else {
        echo "Oh dear " . mysql_error();


    }
    }
}
    ?>
shaktiman_droid

老兄,你有一个名为对象gps是的MainActivity,实际上是你所在的同一个活动。

有两个问题

  • 您根本不需要该gps对象。只是canGetLocation不打gps.canGetLocation
  • 其次,如果您确实想保留该奇怪的gps对象,则必须为其分配一个值,这就是gps = this;您的情况。

那肯定会解决你的 NullPointerException

我希望这有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建sqlite数据库时出现空指针异常

来自分类Dev

调用MySql数据库时出现空指针异常

来自分类Dev

在Android中查询SQLite数据库时出现Java空指针异常

来自分类Dev

Android中的数据库空指针异常

来自分类Dev

我的数据库上的Android空指针异常

来自分类Dev

如何从Android中的数据库中绘制路径纬度和经度值

来自分类Dev

服务中的Android BroadcastReceiver在向其发送广播时提供了空指针异常

来自分类Dev

连接oracle数据库时创建会话工厂时出现空指针异常

来自分类Dev

从Android应用程序向服务器发送纬度和经度

来自分类Dev

Android SQLite数据库空指针

来自分类Dev

在Oracle数据库10G中用于存储纬度和经度的数据类型

来自分类Dev

根据存储在SQLite数据库中的位置(纬度和经度)和时间计算速度

来自分类Dev

使用纬度和经度向Google地图发送位置

来自分类Dev

从App创建SQLite数据库时出现空指针异常

来自分类Dev

从MSSQL数据库表中获取最近的经度和纬度?

来自分类Dev

如何根据纬度和经度距离从Sqlite数据库中检索行?

来自分类Dev

如何使用数据库中的纬度和经度值在Google地图上显示?

来自分类Dev

如何将HTML5,经度和纬度保存到数据库中?

来自分类Dev

PHP:如何从数据库中设置中心Google Map的纬度和经度?

来自分类Dev

我如何获取存储在给定纬度和经度附近的数据库中的酒店

来自分类Dev

如何将纬度和经度从数据库传递到节点 js 中的 ejs 文件

来自分类Dev

在数据库中插入纬度经度

来自分类Dev

在 Python 中比较数据库中的纬度/经度值

来自分类Dev

从数据库向Android发送数据的最佳方法

来自分类Dev

从数据库(db2)检索纬度和经度,并在IBM Worklight中显示在地图中

来自分类Dev

带有Google Map的Laravel未在数据库中显示纬度和经度值的标记

来自分类Dev

根据数据库中保存的经度和纬度显示附近的地方。angular6 + sql server

来自分类Dev

如何通过PHP向数据库发送“空”或空值?

来自分类Dev

向数据库添加值时android NullPointerException

Related 相关文章

  1. 1

    创建sqlite数据库时出现空指针异常

  2. 2

    调用MySql数据库时出现空指针异常

  3. 3

    在Android中查询SQLite数据库时出现Java空指针异常

  4. 4

    Android中的数据库空指针异常

  5. 5

    我的数据库上的Android空指针异常

  6. 6

    如何从Android中的数据库中绘制路径纬度和经度值

  7. 7

    服务中的Android BroadcastReceiver在向其发送广播时提供了空指针异常

  8. 8

    连接oracle数据库时创建会话工厂时出现空指针异常

  9. 9

    从Android应用程序向服务器发送纬度和经度

  10. 10

    Android SQLite数据库空指针

  11. 11

    在Oracle数据库10G中用于存储纬度和经度的数据类型

  12. 12

    根据存储在SQLite数据库中的位置(纬度和经度)和时间计算速度

  13. 13

    使用纬度和经度向Google地图发送位置

  14. 14

    从App创建SQLite数据库时出现空指针异常

  15. 15

    从MSSQL数据库表中获取最近的经度和纬度?

  16. 16

    如何根据纬度和经度距离从Sqlite数据库中检索行?

  17. 17

    如何使用数据库中的纬度和经度值在Google地图上显示?

  18. 18

    如何将HTML5,经度和纬度保存到数据库中?

  19. 19

    PHP:如何从数据库中设置中心Google Map的纬度和经度?

  20. 20

    我如何获取存储在给定纬度和经度附近的数据库中的酒店

  21. 21

    如何将纬度和经度从数据库传递到节点 js 中的 ejs 文件

  22. 22

    在数据库中插入纬度经度

  23. 23

    在 Python 中比较数据库中的纬度/经度值

  24. 24

    从数据库向Android发送数据的最佳方法

  25. 25

    从数据库(db2)检索纬度和经度,并在IBM Worklight中显示在地图中

  26. 26

    带有Google Map的Laravel未在数据库中显示纬度和经度值的标记

  27. 27

    根据数据库中保存的经度和纬度显示附近的地方。angular6 + sql server

  28. 28

    如何通过PHP向数据库发送“空”或空值?

  29. 29

    向数据库添加值时android NullPointerException

热门标签

归档