Android版MYSQL直通PHP [英] Android to MYSQL thru php

查看:253
本文介绍了Android版MYSQL直通PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好我follwing这个教程在这里<一个href=\"http://fahmirahman.word$p$pss.com/2011/04/21/connection-between-php-server-and-android-client-using-http-and-json\" rel=\"nofollow\">http://fahmirahman.word$p$pss.com/2011/04/21/connection-between-php-server-and-android-client-using-http-and-json而无法得到想要的结果不如预期,这是我在我的网站 techiequickie.com/的food.php文件food.php

那么这就是我试图把我的Andorid main.java文件code

 包com.connectsql.test;进口java.io.BufferedReader中;
进口的java.io.InputStream;
进口java.io.InputStreamReader中;
进口的java.util.List;进口org.apache.http.HttpEntity;
进口org.apache.http.Htt presponse;
进口org.apache.http.NameValuePair;
进口org.apache.http.ParseException;
进口org.apache.http.client.HttpClient;
进口org.apache.http.client.entity.UrlEn codedFormEntity;
进口org.apache.http.client.methods.HttpPost;
进口org.apache.http.impl.client.DefaultHttpClient;
进口org.json.JSONArray;
进口org.json.JSONException;
进口org.json.JSONObject;进口android.app.ListActivity;
进口android.os.Bundle;
进口android.util.Log;
进口android.widget.Toast;公共类ConnectsqlActivity扩展ListActivity {
    / **当第一次创建活动调用。 * /
    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);        字符串结果= NULL;
        InputStream为= NULL;
        StringBuilder的SB = NULL;        // HTTP POST
        尝试{
            HttpClient的HttpClient的=新DefaultHttpClient();
            HttpPost httppost =新HttpPost(http://techiequickie.com/food.php);
            名单,LT ;?扩展的NameValuePair&GT; namevaluepairs中= NULL;
            httppost.setEntity(新UrlEn codedFormEntity(namevaluepairs中));
            HTT presponse响应= httpclient.execute(httppost);
            HttpEntity实体= response.getEntity();
            是= entity.getContent();
        }赶上(例外五){
            Log.e(log_tag,在HTTP连接错误+ e.toString());
        }
        //响应转换为字符串
        尝试{
            读者的BufferedReader =新的BufferedReader(新的InputStreamReader(是,ISO-8859-1),8);
            SB =新的StringBuilder();
            sb.append(reader.readLine()+\\ n);
            串行=0;            而((行= reader.readLine())!= NULL){
                sb.append(行+\\ n);
            }            is.close();
            结果= sb.toString();        }赶上(例外五){
            Log.e(log_tag,错误转换结果+ e.toString());
        }        //配对数据
        INT fd_id;
        串fd_name;
        尝试{
        JSONArray jArray =新JSONArray(结果);
        JSONObject的json_data = NULL;        的for(int i = 0; I&LT; jArray.length();我++){
                json_data = jArray.getJSONObject(ⅰ);
                fd_id = json_data.getInt(FOOD_ID);
                fd_name = json_data.getString(FOOD_NAME);
        }        }赶上(JSONException E1){
            Toast.makeText(getBaseContext(),无食物中,Toast.LENGTH_LONG).show();
        }赶上(ParseException的E1){
            e1.printStackTrace();
        }    }
}

我得到的错误是应用程序意外关闭,所以我DONOT明白我必须做我的main.xml中默认是在我没加任何控制的方式出现,以得到这个工作TKS。
下面是我的main.xml code

 &LT;?XML版本=1.0编码=UTF-8&GT?;
&LT; LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:方向=垂直&GT;    &LT;的TextView
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =WRAP_CONTENT
        机器人:文字=@字符串/你好/&GT;    &LT;的LinearLayout
        机器人:ID =@ + ID / linearLayout1
        机器人:layout_width =match_parent
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_weight =0.82
        机器人:方向=垂直&GT;
    &LT; / LinearLayout中&GT;&LT; / LinearLayout中&GT;

TKS

logcat的误差

  01-30 16:07:12.155:D / AndroidRuntime(787):关闭VM
01-30 16:07:12.155:W / dalvikvm(787):主题ID = 1:螺纹未捕获的异常(组= 0x40015560)退出
01-30 16:07:12.175:E / AndroidRuntime(787):致命异常:主要
01-30 16:07:12.175:E / AndroidRuntime(787):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.connectsql.test / com.connectsql.test.ConnectsqlActivity}了java.lang.RuntimeException:您的内容必须有一个ListView的id属性是'android.R.id.list
01-30 16:07:12.175:E / AndroidRuntime(787):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
01-30 16:07:12.175:E / AndroidRuntime(787):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-30 16:07:12.175:E / AndroidRuntime(787):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
01-30 16:07:12.175:E / AndroidRuntime(787):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
01-30 16:07:12.175:E / AndroidRuntime(787):在android.os.Handler.dispatchMessage(Handler.java:99)
01-30 16:07:12.175:E / AndroidRuntime(787):在android.os.Looper.loop(Looper.java:123)
01-30 16:07:12.175:E / AndroidRuntime(787):在android.app.ActivityThread.main(ActivityThread.java:3683)
01-30 16:07:12.175:E / AndroidRuntime(787):在java.lang.reflect.Method.invokeNative(本机方法)
01-30 16:07:12.175:E / AndroidRuntime(787):在java.lang.reflect.Method.invoke(Method.java:507)
01-30 16:07:12.175:E / AndroidRuntime(787):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
01-30 16:07:12.175:E / AndroidRuntime(787):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-30 16:07:12.175:E / AndroidRuntime(787):在dalvik.system.NativeStart.main(本机方法)
01-30 16:07:12.175:E / AndroidRuntime(787):了java.lang.RuntimeException::你的内容必须有一个ListView的id属性是'android.R.id.list产生的原因
01-30 16:07:12.175:E / AndroidRuntime(787):在android.app.ListActivity.onContentChanged(ListActivity.java:243)
01-30 16:07:12.175:E / AndroidRuntime(787):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:210)
01-30 16:07:12.175:E / AndroidRuntime(787):在android.app.Activity.setContentView(Activity.java:1657)
01-30 16:07:12.175:E / AndroidRuntime(787):在com.connectsql.test.ConnectsqlActivity.onCreate(ConnectsqlActivity.java:30)
01-30 16:07:12.175:E / AndroidRuntime(787):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-30 16:07:12.175:E / AndroidRuntime(787):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
01-30 16:07:12.175:E / AndroidRuntime(787):11 ...更多

@Sergey logcat的错误请留意,我修改的main.xml code低于

  01-31 00:39:20.625:E / log_tag(424):错误HTTP connectionjava.net.UnknownHostException:techiequickie.com
01-31 00:39:20.625:E / log_tag(424):错误转换结果显示java.lang.NullPointerException
01-31 00:39:20.625:D / AndroidRuntime(424):关闭VM
01-31 00:39:20.625:W / dalvikvm(424):主题ID = 1:螺纹未捕获的异常(组= 0x40015560)退出
01-31 00:39:20.665:E / AndroidRuntime(424):致命异常:主要
01-31 00:39:20.665:E / AndroidRuntime(424):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.mysql / com.mysql.MysqlconActivity}:显示java.lang.NullPointerException
01-31 00:39:20.665:E / AndroidRuntime(424):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
01-31 00:39:20.665:E / AndroidRuntime(424):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-31 00:39:20.665:E / AndroidRuntime(424):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
01-31 00:39:20.665:E / AndroidRuntime(424):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
01-31 00:39:20.665:E / AndroidRuntime(424):在android.os.Handler.dispatchMessage(Handler.java:99)
01-31 00:39:20.665:E / AndroidRuntime(424):在android.os.Looper.loop(Looper.java:123)
01-31 00:39:20.665:E / AndroidRuntime(424):在android.app.ActivityThread.main(ActivityThread.java:3683)
01-31 00:39:20.665:E / AndroidRuntime(424):在java.lang.reflect.Method.invokeNative(本机方法)
01-31 00:39:20.665:E / AndroidRuntime(424):在java.lang.reflect.Method.invoke(Method.java:507)
01-31 00:39:20.665:E / AndroidRuntime(424):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
01-31 00:39:20.665:E / AndroidRuntime(424):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-31 00:39:20.665:E / AndroidRuntime(424):在dalvik.system.NativeStart.main(本机方法)
01-31 00:39:20.665:E / AndroidRuntime(424):致:显示java.lang.NullPointerException
01-31 00:39:20.665:E / AndroidRuntime(424):在com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:298)
01-31 00:39:20.665:E / AndroidRuntime(424):在com.mysql.MysqlconActivity.onCreate(MysqlconActivity.java:66)
01-31 00:39:20.665:E / AndroidRuntime(424):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-31 00:39:20.665:E / AndroidRuntime(424):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
01-31 00:39:20.665:E / AndroidRuntime(424):11 ...更多
01-31 00:39:28.775:I /流程(424):发送信号。 PID:424 SIG:9
01-31 00:43:37.995:E / log_tag(473):在HTTP connectionjava.net.UnknownHostException错误:techiequickie.com
01-31 00:43:37.995:E / log_tag(473):错误转换结果显示java.lang.NullPointerException
01-31 00:43:37.995:D / AndroidRuntime(473):关闭VM
01-31 00:43:37.995:W / dalvikvm(473):主题ID = 1:螺纹未捕获的异常(组= 0x40015560)退出
01-31 00:43:38.036:E / AndroidRuntime(473):致命异常:主要
01-31 00:43:38.036:E / AndroidRuntime(473):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.mysql / com.mysql.MysqlconActivity}:显示java.lang.NullPointerException
01-31 00:43:38.036:E / AndroidRuntime(473):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
01-31 00:43:38.036:E / AndroidRuntime(473):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-31 00:43:38.036:E / AndroidRuntime(473):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
01-31 00:43:38.036:E / AndroidRuntime(473):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
01-31 00:43:38.036:E / AndroidRuntime(473):在android.os.Handler.dispatchMessage(Handler.java:99)
01-31 00:43:38.036:E / AndroidRuntime(473):在android.os.Looper.loop(Looper.java:123)
01-31 00:43:38.036:E / AndroidRuntime(473):在android.app.ActivityThread.main(ActivityThread.java:3683)
01-31 00:43:38.036:E / AndroidRuntime(473):在java.lang.reflect.Method.invokeNative(本机方法)
01-31 00:43:38.036:E / AndroidRuntime(473):在java.lang.reflect.Method.invoke(Method.java:507)
01-31 00:43:38.036:E / AndroidRuntime(473):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
01-31 00:43:38.036:E / AndroidRuntime(473):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-31 00:43:38.036:E / AndroidRuntime(473):在dalvik.system.NativeStart.main(本机方法)
01-31 00:43:38.036:E / AndroidRuntime(473):致:显示java.lang.NullPointerException
01-31 00:43:38.036:E / AndroidRuntime(473):在com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:298)
01-31 00:43:38.036:E / AndroidRuntime(473):在com.mysql.MysqlconActivity.onCreate(MysqlconActivity.java:61)
01-31 00:43:38.036:E / AndroidRuntime(473):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-31 00:43:38.036:E / AndroidRuntime(473):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
01-31 00:43:38.036:E / AndroidRuntime(473):11 ...更多

修改main.xml中,我附加了下面的截图,因为我加入了列表视图,并从code中的最后一行,你指的是test_text现场说,tv.setText(fd_id ++ fd_name);但是,试图理解这个line.tks所有的努力。

 &LT;?XML版本=1.0编码=UTF-8&GT?;
&LT; LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:方向=垂直&GT;
    &LT;的TextView
        机器人:ID =@ + ID / test_text
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =WRAP_CONTENT
        机器人:文字=你好/&GT;    &LT; ListView控件
        机器人:ID =@机器人:ID /列表
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent&GT;
    &LT; /&的ListView GT;&LT; / LinearLayout中&GT;


解决方案

你,因为你正在扩展ListActivity必须添加以下到您的布局

 &LT; ListView的机器人:ID =@机器人:ID /列表
             机器人:layout_width =match_parent
             机器人:layout_height =match_parent
             /&GT;

否则没关系我会在此示例中使用HTTPGET虽然。

编辑:
布局:

 &LT;?XML版本=1.0编码=UTF-8&GT?;
&LT; LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:方向=垂直&GT;    &LT;的TextView
        机器人:ID =@ + ID / test_text
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =WRAP_CONTENT
        机器人:文字=你好/&GT;    &LT; ListView的机器人:ID =@机器人:ID /列表
                 机器人:layout_width =match_parent
                 机器人:layout_height =match_parent
                /&GT;&LT; / LinearLayout中&GT;

code:

 进口org.apache.http *。
进口java.io.BufferedReader中;
进口的java.io.InputStream;
进口java.io.InputStreamReader中;
进口org.apache.http.client.methods.HttpGet;进口android.widget.TextView;
进口org.apache.http.impl.client.DefaultHttpClient;
进口org.json.JSONArray;
进口org.json.JSONException;
进口org.json.JSONObject;进口android.app.ListActivity;
进口android.os.Bundle;
进口android.util.Log;
进口android.widget.Toast;公共类ConnectsqlActivity扩展ListActivity {       @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        字符串结果= NULL;
        InputStream为= NULL;
        StringBuilder的SB = NULL;        尝试{
            DefaultHttpClient的HttpClient =新DefaultHttpClient();
        // setProxy(HttpClient的,yourproxyorIP,9090,用户名,密码); //使用代理服务器的端口            HTTPGET httppost =新HTTPGET(http://techiequickie.com/food.php);
            HTT presponse响应= httpclient.execute(httppost);
            HttpEntity实体= response.getEntity();
            是= entity.getContent();
        }赶上(例外五){
            Log.e(log_tag,在HTTP连接错误+ e.toString());
        }
        尝试{
            读者的BufferedReader =新的BufferedReader(新的InputStreamReader(是));
            SB =新的StringBuilder();
            sb.append(reader.readLine()+\\ n);
            串行=0;            而((行= reader.readLine())!= NULL){
                sb.append(行+\\ n);
            }            is.close();
            结果= sb.toString();        }赶上(例外五){
            Log.e(log_tag,错误转换结果+ e.toString());
        }
        的System.out.println(结果);
        //配对数据
        INT fd_id = 0;
        字符串fd_name = NULL;
        尝试{
        JSONArray jArray =新JSONArray(结果);
        JSONObject的json_data = NULL;        的for(int i = 0; I&LT; jArray.length();我++){
                json_data = jArray.getJSONObject(ⅰ);
                fd_id = json_data.getInt(FOOD_ID);
                fd_name = json_data.getString(FOOD_NAME);
        }        }赶上(JSONException E1){
            Toast.makeText(getBaseContext(),无食物中,Toast.LENGTH_LONG).show();
        }赶上(ParseException的E1){
            e1.printStackTrace();
        }
        的setContentView(R.layout.test);
        TextView的电视=(的TextView)findViewById(R.id.test_text);
        tv.setText(fd_id ++ fd_name);    }私有静态无效setProxy(DefaultHttpClient HttpClient的,
                串代理,INT端口,用户名字符串,字符串密码)
{
    的HttpParams PARAMS = httpClient.getParams();
    params.setParameter(ConnRoutePNames.DEFAULT_PROXY,
            新HttpHost(代理端口));
    如果(用户名= NULL&放大器;!&放大器;密码= NULL){
    httpClient.getCredentialsProvider()。setCredentials方法(
                新AuthScope(代理端口)
                新UsernamePasswordCredentials(用户名,密码)
        );
    }
    httpClient.setParams(PARAMS);
}
}

Hi i am follwing this tutorial over here http://fahmirahman.wordpress.com/2011/04/21/connection-between-php-server-and-android-client-using-http-and-json and unable to get the desired results as expected, this is the food.php file that i have at my website techiequickie.com/food.php

then this is the code that i am trying to put in my andorid main.java file

    package com.connectsql.test;

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

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
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.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class ConnectsqlActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);



        String result = null;
        InputStream is = null;
        StringBuilder sb=null;



        //http post
        try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://techiequickie.com/food.php");
            List<? extends NameValuePair> nameValuePairs = null;
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        }catch(Exception e){
            Log.e("log_tag", "Error in http connection"+e.toString());
        }


        //convert response to string
        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
            sb = new StringBuilder();
            sb.append(reader.readLine() + "\n");
            String line="0";

            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }

            is.close();
            result=sb.toString();

        }catch(Exception e){
            Log.e("log_tag", "Error converting result "+e.toString());
        }

        //paring data
        int fd_id;
        String fd_name;
        try{
        JSONArray jArray = new JSONArray(result);
        JSONObject json_data=null;

        for(int i=0;i<jArray.length();i++){
                json_data = jArray.getJSONObject(i);
                fd_id=json_data.getInt("FOOD_ID");
                fd_name=json_data.getString("FOOD_NAME");
        }

        }catch(JSONException e1){
            Toast.makeText(getBaseContext(), "No Food Found", Toast.LENGTH_LONG).show();
        }catch (ParseException e1){
            e1.printStackTrace();
        }

    }
}

the error i am getting is application closed unexpectedly, so i donot understand what i have to do to get this work tks by the way my main.xml is default as in i did not add any controls there. below is my main.xml code

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.82"
        android:orientation="vertical" >
    </LinearLayout>

</LinearLayout>

tks

LOGCAT error

01-30 16:07:12.155: D/AndroidRuntime(787): Shutting down VM
01-30 16:07:12.155: W/dalvikvm(787): threadid=1: thread exiting with uncaught exception (group=0x40015560)
01-30 16:07:12.175: E/AndroidRuntime(787): FATAL EXCEPTION: main
01-30 16:07:12.175: E/AndroidRuntime(787): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.connectsql.test/com.connectsql.test.ConnectsqlActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.os.Looper.loop(Looper.java:123)
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.app.ActivityThread.main(ActivityThread.java:3683)
01-30 16:07:12.175: E/AndroidRuntime(787):  at java.lang.reflect.Method.invokeNative(Native Method)
01-30 16:07:12.175: E/AndroidRuntime(787):  at java.lang.reflect.Method.invoke(Method.java:507)
01-30 16:07:12.175: E/AndroidRuntime(787):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-30 16:07:12.175: E/AndroidRuntime(787):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-30 16:07:12.175: E/AndroidRuntime(787):  at dalvik.system.NativeStart.main(Native Method)
01-30 16:07:12.175: E/AndroidRuntime(787): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.app.ListActivity.onContentChanged(ListActivity.java:243)
01-30 16:07:12.175: E/AndroidRuntime(787):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:210)
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.app.Activity.setContentView(Activity.java:1657)
01-30 16:07:12.175: E/AndroidRuntime(787):  at com.connectsql.test.ConnectsqlActivity.onCreate(ConnectsqlActivity.java:30)
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-30 16:07:12.175: E/AndroidRuntime(787):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
01-30 16:07:12.175: E/AndroidRuntime(787):  ... 11 more

@Sergey logcat error please take note that my modified main.xml code is below

01-31 00:39:20.625: E/log_tag(424): Error in http connectionjava.net.UnknownHostException: techiequickie.com
01-31 00:39:20.625: E/log_tag(424): Error converting result java.lang.NullPointerException
01-31 00:39:20.625: D/AndroidRuntime(424): Shutting down VM
01-31 00:39:20.625: W/dalvikvm(424): threadid=1: thread exiting with uncaught exception (group=0x40015560)
01-31 00:39:20.665: E/AndroidRuntime(424): FATAL EXCEPTION: main
01-31 00:39:20.665: E/AndroidRuntime(424): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mysql/com.mysql.MysqlconActivity}: java.lang.NullPointerException
01-31 00:39:20.665: E/AndroidRuntime(424):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
01-31 00:39:20.665: E/AndroidRuntime(424):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-31 00:39:20.665: E/AndroidRuntime(424):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-31 00:39:20.665: E/AndroidRuntime(424):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
01-31 00:39:20.665: E/AndroidRuntime(424):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-31 00:39:20.665: E/AndroidRuntime(424):  at android.os.Looper.loop(Looper.java:123)
01-31 00:39:20.665: E/AndroidRuntime(424):  at android.app.ActivityThread.main(ActivityThread.java:3683)
01-31 00:39:20.665: E/AndroidRuntime(424):  at java.lang.reflect.Method.invokeNative(Native Method)
01-31 00:39:20.665: E/AndroidRuntime(424):  at java.lang.reflect.Method.invoke(Method.java:507)
01-31 00:39:20.665: E/AndroidRuntime(424):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-31 00:39:20.665: E/AndroidRuntime(424):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-31 00:39:20.665: E/AndroidRuntime(424):  at dalvik.system.NativeStart.main(Native Method)
01-31 00:39:20.665: E/AndroidRuntime(424): Caused by: java.lang.NullPointerException
01-31 00:39:20.665: E/AndroidRuntime(424):  at com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:298)
01-31 00:39:20.665: E/AndroidRuntime(424):  at com.mysql.MysqlconActivity.onCreate(MysqlconActivity.java:66)
01-31 00:39:20.665: E/AndroidRuntime(424):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-31 00:39:20.665: E/AndroidRuntime(424):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
01-31 00:39:20.665: E/AndroidRuntime(424):  ... 11 more
01-31 00:39:28.775: I/Process(424): Sending signal. PID: 424 SIG: 9
01-31 00:43:37.995: E/log_tag(473): Error in http connectionjava.net.UnknownHostException: techiequickie.com
01-31 00:43:37.995: E/log_tag(473): Error converting result java.lang.NullPointerException
01-31 00:43:37.995: D/AndroidRuntime(473): Shutting down VM
01-31 00:43:37.995: W/dalvikvm(473): threadid=1: thread exiting with uncaught exception (group=0x40015560)
01-31 00:43:38.036: E/AndroidRuntime(473): FATAL EXCEPTION: main
01-31 00:43:38.036: E/AndroidRuntime(473): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mysql/com.mysql.MysqlconActivity}: java.lang.NullPointerException
01-31 00:43:38.036: E/AndroidRuntime(473):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
01-31 00:43:38.036: E/AndroidRuntime(473):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-31 00:43:38.036: E/AndroidRuntime(473):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-31 00:43:38.036: E/AndroidRuntime(473):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
01-31 00:43:38.036: E/AndroidRuntime(473):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-31 00:43:38.036: E/AndroidRuntime(473):  at android.os.Looper.loop(Looper.java:123)
01-31 00:43:38.036: E/AndroidRuntime(473):  at android.app.ActivityThread.main(ActivityThread.java:3683)
01-31 00:43:38.036: E/AndroidRuntime(473):  at java.lang.reflect.Method.invokeNative(Native Method)
01-31 00:43:38.036: E/AndroidRuntime(473):  at java.lang.reflect.Method.invoke(Method.java:507)
01-31 00:43:38.036: E/AndroidRuntime(473):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-31 00:43:38.036: E/AndroidRuntime(473):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-31 00:43:38.036: E/AndroidRuntime(473):  at dalvik.system.NativeStart.main(Native Method)
01-31 00:43:38.036: E/AndroidRuntime(473): Caused by: java.lang.NullPointerException
01-31 00:43:38.036: E/AndroidRuntime(473):  at com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:298)
01-31 00:43:38.036: E/AndroidRuntime(473):  at com.mysql.MysqlconActivity.onCreate(MysqlconActivity.java:61)
01-31 00:43:38.036: E/AndroidRuntime(473):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-31 00:43:38.036: E/AndroidRuntime(473):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
01-31 00:43:38.036: E/AndroidRuntime(473):  ... 11 more

Modified main.xml, i attached a screenshot below because i added the listview and from your code the last line you refer to the test_text field saying that "tv.setText(fd_id+" "+fd_name);" but trying to understand this line.tks for all the effort.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/test_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="hello" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </ListView>

</LinearLayout>

解决方案

you must add the following to your layout because you are extending ListActivity

<ListView android:id="@android:id/list"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             />

otherwise it's okay I'd use HttpGet though in this sample.

EDIT: layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/test_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="hello" />

    <ListView android:id="@android:id/list"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                />

</LinearLayout>

code:

import org.apache.http.*;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.client.methods.HttpGet;

import android.widget.TextView;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class ConnectsqlActivity extends ListActivity {

       @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String result = null;
        InputStream is = null;
        StringBuilder sb=null;

        try{
            DefaultHttpClient httpclient = new DefaultHttpClient();
        //    setProxy(httpclient,"yourproxyorIP",9090,"username","password"); //use your proxy's port

            HttpGet httppost = new HttpGet("http://techiequickie.com/food.php");
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        }catch(Exception e){
            Log.e("log_tag", "Error in http connection"+e.toString());
        }
        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            sb = new StringBuilder();
            sb.append(reader.readLine() + "\n");
            String line="0";

            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }

            is.close();
            result=sb.toString();

        }catch(Exception e){
            Log.e("log_tag", "Error converting result "+e.toString());
        }
        System.out.println(result);
        //paring data
        int fd_id=0;
        String fd_name=null;
        try{
        JSONArray jArray = new JSONArray(result);
        JSONObject json_data=null;

        for(int i=0;i<jArray.length();i++){
                json_data = jArray.getJSONObject(i);
                fd_id=json_data.getInt("FOOD_ID");
                fd_name=json_data.getString("FOOD_NAME");
        }

        }catch(JSONException e1){
            Toast.makeText(getBaseContext(), "No Food Found", Toast.LENGTH_LONG).show();
        }catch (ParseException e1){
            e1.printStackTrace();
        }
        setContentView(R.layout.test);
        TextView tv = (TextView)findViewById(R.id.test_text);
        tv.setText(fd_id+" "+fd_name);

    }

private static void setProxy (DefaultHttpClient httpClient,
                String proxy,int port,String username,String password)
{
    HttpParams params = httpClient.getParams();
    params.setParameter(ConnRoutePNames.DEFAULT_PROXY,
            new HttpHost( proxy,port));
    if(username!=null&&password!=null){
    httpClient.getCredentialsProvider().setCredentials(
                new AuthScope(proxy, port),
                new UsernamePasswordCredentials(username, password)
        );
    }
    httpClient.setParams(params);
}


}

这篇关于Android版MYSQL直通PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆