Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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/3/android/235.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 JSON分析运行时错误-不同的类_Java_Android_Json_Http Post_Extends - Fatal编程技术网

Java JSON分析运行时错误-不同的类

Java JSON分析运行时错误-不同的类,java,android,json,http-post,extends,Java,Android,Json,Http Post,Extends,我有两个类,一个叫做Main1843,另一个叫做JsonParse。当我把所有的东西都复制到和main1843一样的课堂上时,一切都很好。但我更喜欢分班上课,保持整洁。问题是我不能运行下面的代码。没有显示错误,只是应用程序停止运行。 (清单文件具有权限) 因为这是一个简短的程序,也许你可以检查每一行 Main1843等级: public class Main1843 extends Activity implements View.OnClickListener { private Button

我有两个类,一个叫做Main1843,另一个叫做JsonParse。当我把所有的东西都复制到和main1843一样的课堂上时,一切都很好。但我更喜欢分班上课,保持整洁。问题是我不能运行下面的代码。没有显示错误,只是应用程序停止运行。 (清单文件具有权限

因为这是一个简短的程序,也许你可以检查每一行

Main1843等级:

public class Main1843 extends Activity implements View.OnClickListener {
private Button button;
private TextView tv;
private EditText et;

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

    tv = (TextView) findViewById(R.id.panel);
    et = (EditText) findViewById(R.id.editText1);
    button = (Button) findViewById(R.id.button1);

    button.setOnClickListener(this);
}

public void onClick(View v) {
    String text;
    text = et.getText().toString();
    tv.append(text);
    tv.append("\n");
    new JsonParse().execute();
}

protected void putScreen(String t) {
    tv.append(t);
}   
}
另一个类(JsonParse)扩展了AsyncTask

public类JsonParse扩展了异步任务{
私家弦亚子;
保护串yazi2;
受保护的字符串id;
私有字符串TAG=“JWP”;
@凌驾
受保护对象doInBackground(对象[]对象){
回程邮递(”http://somewebsite/show.php");
}
公共字符串帖子(字符串url){
字符串结果=”;
HttpClient=new DefaultHttpClient();
HttpPost=新的HttpPost(url);
Main1843 m=新Main1843();
试一试{
HttpResponse response=client.execute(post);
InputStream InputStream=response.getEntity().getContent();
如果(inputStream!=null){
字符串文本=”;
结果=convertInputStreamToString(inputStream);
Log.d(标签、结果);
JSONArray阅读器=新的JSONArray(结果);
for(int i=0;i

谢谢您的时间。

评论解决了问题

“您需要将活动上下文传递到AsyncTask中以调用其上的方法,或者您可以调用活动实现的侦听器,或者您可以使用localbroadcast。”KenWolf


@ShaikhMohammedShariq

您是否添加了internet权限?是的,已经写到,清单文件具有internet权限和internet状态权限。
Main1843 m=new Main1843()这不是你使用Activities的方式好吧,你为什么不使用gson?@KenWolf你能更具体一点吗?我用它来访问“putScreen”功能。
public class JsonParse extends AsyncTask{
private String yazi;
protected String yazi2;
protected String id;

private String TAG = "JWP";


@Override
protected Object doInBackground(Object[] objects) {
    return POST("http://somewebsite/show.php");
}


public String POST(String url) {
    String result = "";
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);
    Main1843 m = new Main1843();

    try {
        HttpResponse response = client.execute(post);
        InputStream inputStream = response.getEntity().getContent();
        if (inputStream != null) {
            String text = "";
            result = convertInputStreamToString(inputStream);
            Log.d(TAG, result);
            JSONArray reader = new JSONArray(result);
            for (int i = 0; i < reader.length(); i++) {
                JSONObject data = reader.getJSONObject(i);
                id = data.getString("id");
                yazi = data.getString("yazi");
                yazi2 = data.getString("yazi2");

                text += yazi;
                text += " ";
            }
            m.putScreen(text);
        } else
            result = "Did not work";
        return result;
    } catch (IOException e) {
        e.printStackTrace();
        return "Exception 1";
    } catch (Exception e) {
        e.printStackTrace();
        return "haha";
    }
}


private String convertInputStreamToString(InputStream inputStream) {
    BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
    String line = "";
    String result = "";

    try {
        while ((line = br.readLine()) != null)
            result += line;
        br.close();
        return result;
    } catch (IOException e) {
        e.printStackTrace();
        return "Exception";
    }

}
}