Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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
Java 关闭android程序,立即在json中运行应用程序_Java_Php_Android_Json_Android Studio - Fatal编程技术网

Java 关闭android程序,立即在json中运行应用程序

Java 关闭android程序,立即在json中运行应用程序,java,php,android,json,android-studio,Java,Php,Android,Json,Android Studio,大家好,我写了一个程序从服务器获取数据,并用json在列表视图中显示数据 但当我启动应用程序时,应用程序立即关闭。 我检查了我的舱单,没问题,我不知道该怎么办,请帮帮我 主要活动代码: package com.example.delta.travel; import android.app.ListActivity; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle;

大家好,我写了一个程序从服务器获取数据,并用json在列表视图中显示数据 但当我启动应用程序时,应用程序立即关闭。 我检查了我的舱单,没问题,我不知道该怎么办,请帮帮我

主要活动代码:

package com.example.delta.travel;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class MainActivity extends ListActivity {

private ProgressDialog pd;
JSONParser jParser=new JSONParser();
ArrayList<HashMap<String,String>> P;
JSONArray s=null;
private final String url="http://192.168.1.4/upload/travel.php";

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

    new travel().execute();

}

class travel extends AsyncTask<String,String,String>{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pd=new ProgressDialog(MainActivity.this);
        pd.setMessage("login");
        pd.show();
    }

    @Override
    protected String doInBackground(String... params) {

        List<NameValuePair> parms=new ArrayList<>();
        JSONObject json=jParser.makeHTTPRequest(url,"GET",parms);
        try {
            int t=json.getInt("t");
            if(t==1){
                s=json.getJSONArray("travel");
                for(int i=0;i<s.length();i++){
                    JSONObject c=s.getJSONObject(i);
                    String companyname=c.getString("companyname");
                    String cod=c.getString("cod");
                    String bign=c.getString("bign");
                    String stop=c.getString("stop");
                    String date=c.getString("date");
                    String time=c.getString("time");
                    String price=c.getString("price");

                    HashMap<String,String>map=new HashMap<String,String>();
                    map.put("companyname",companyname);
                    map.put("cod",cod);
                    map.put("bign",bign);
                    map.put("stop",stop);
                    map.put("date",date);
                    map.put("time",time);
                    map.put("price",price);

                    P.add(map);

                }
            }else {
                Toast.makeText(MainActivity.this,"No                DataFound",Toast.LENGTH_SHORT).show();
            }


        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        pd.dismiss();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                ListAdapter adapter = new SimpleAdapter(MainActivity.this, P, R.layout.item_list,
                        new String[]{"companyname", "cod", "bign", "stop", "date", "time", "price"},
                        new int[]{R.id.companyname, R.id.cod, R.id.bign,   R.id.stop, R.id.date, R.id.time1, R.id.price});
                setListAdapter(adapter);
            }
        });

    }
}
}
package com.example.delta.travel;
导入android.app.ListActivity;
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.design.widget.Snackbar;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.view.view;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.ListAdapter;
导入android.widget.simpledapter;
导入android.widget.Toast;
导入org.apache.http.NameValuePair;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
公共类MainActivity扩展了ListActivity{
私营部门;
JSONParser jParser=新的JSONParser();
ArrayList P;
JSONArray s=null;
私有最终字符串url=”http://192.168.1.4/upload/travel.php";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
新行程().execute();
}
班级旅行任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pd=新建进度对话框(MainActivity.this);
pd.setMessage(“登录”);
pd.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
List parms=new ArrayList();
JSONObject json=jParser.makeHTTPRequest(url,“GET”,parms);
试一试{
int t=json.getInt(“t”);
如果(t==1){
s=json.getJSONArray(“旅行”);
对于(int i=0;i

进行一些更改,看看它是否有效:

new travel().execute(url);
您的任务:

class travel extends AsyncTask<String,Void,String>{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pd=new ProgressDialog(MainActivity.this);
        pd.setMessage("login");
        pd.show();
    }

    @Override
    protected String doInBackground(String... params) {

       // List<NameValuePair> parms=new ArrayList<>();
for(urlString in params){
            JSONObject json=jParser.makeHTTPRequest(urlString,"GET");
}
//rest is same

进行一些更改,看看是否有效:

new travel().execute(url);
您的任务:

class travel extends AsyncTask<String,Void,String>{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pd=new ProgressDialog(MainActivity.this);
        pd.setMessage("login");
        pd.show();
    }

    @Override
    protected String doInBackground(String... params) {

       // List<NameValuePair> parms=new ArrayList<>();
for(urlString in params){
            JSONObject json=jParser.makeHTTPRequest(urlString,"GET");
}
//rest is same
1) 使用此代码更改JSONParser类中的代码。仅使用此代码

 public JSONObject makeHTTPRequest(String urlString, String method) {

    if(method.equals("POST")){

        URL url = null;
        try {
            url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Accept", "application/json");

            BufferedReader br = new BufferedReader(new InputStreamReader(
                    (conn.getInputStream())));
            String output;
            StringBuilder sb = new StringBuilder();
            while ((output = br.readLine()) != null) {
                sb.append(output);
            }
            conn.disconnect();
            json = sb.toString();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }else if(method.equals("GET")){
        URL url = null;
        try {
            url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");

            BufferedReader br = new BufferedReader(new InputStreamReader(
                    (conn.getInputStream())));
            String output;
            StringBuilder sb = new StringBuilder();
            while ((output = br.readLine()) != null) {
                sb.append(output);
            }
            conn.disconnect();
            json = sb.toString();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    return jObj;
}
2) 在MainActivity中,您必须在onCreate()方法中添加p=newArrayList();如下所示

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    P = new ArrayList<>();
    new travel().execute();

}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
P=新的ArrayList();
新行程().execute();
}
所有这些都完成了。它在我这边起作用。它肯定也会对你起作用。

1)用这些代码更改JSONParser类中的代码。只使用这些虚构的代码

 public JSONObject makeHTTPRequest(String urlString, String method) {

    if(method.equals("POST")){

        URL url = null;
        try {
            url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Accept", "application/json");

            BufferedReader br = new BufferedReader(new InputStreamReader(
                    (conn.getInputStream())));
            String output;
            StringBuilder sb = new StringBuilder();
            while ((output = br.readLine()) != null) {
                sb.append(output);
            }
            conn.disconnect();
            json = sb.toString();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }else if(method.equals("GET")){
        URL url = null;
        try {
            url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");

            BufferedReader br = new BufferedReader(new InputStreamReader(
                    (conn.getInputStream())));
            String output;
            StringBuilder sb = new StringBuilder();
            while ((output = br.readLine()) != null) {
                sb.append(output);
            }
            conn.disconnect();
            json = sb.toString();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    return jObj;
}
2) 在MainActivity中,您必须在onCreate()方法中添加p=newArrayList();如下所示

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    P = new ArrayList<>();
    new travel().execute();

}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
P=新的ArrayList();
新行程().execute();
}


所有这些都完成了。它在我这边起作用了。它肯定也会对你起作用。

logcat中的任何内容?你将json解析器类返回的对象存储在哪里?logcat中的任何内容?你将json解析器类返回的对象存储在哪里?我插入你的代码,但在第二行:p=jp.makeHTTPRequest(url,“GET”,parms);show me error.该错误表示其不兼容类型i插入更新的代码,但在我立即关闭应用程序时仍然可以粘贴您的LogCat报告吗?deltaspot.ir/log.txt不可访问。在您的问题中更新您的LogCat报告。是什么错误导致应用程序崩溃。我插入了您的代码,但在第二行:P=jp.makeHTTPRequest(url,“GET”,parms);show me error.the error say it compatible typei i insert your updated code但仍在运行应用程序时立即关闭能否粘贴LogCat报告?deltaspot.ir/log.txt不可访问。请在问题中更新LogCat报告。是什么错误导致应用程序崩溃。我更改了AsyncTask函数代码和JSONParser,但再次关闭了它当我启动应用程序时,你检查过NullPointerException来自何处吗?请提供你正在解析的json字符串。我找不到NullPointerException来自何处,但你可以在此链接中下载我的文件,并检查是否也提供你想要pars.h的json字符串这是我的json代码:我更改了AsyncTask函数代码和JSONParser,但在启动应用程序时再次关闭了它。您是否检查了NullPointerException来自何处?请给出您正在解析的json字符串。我找不到NullPointerException来自何处,但您可以在此链接和chec中下载我的文件ked也提供您想要解析的json字符串。以下是我的json代码: