首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android studio如何在空对象引用(HTTP请求)上调用虚方法'java?

Android studio如何在空对象引用(HTTP请求)上调用虚方法'java?
EN

Stack Overflow用户
提问于 2018-08-09 04:54:47
回答 1查看 0关注 0票数 0

java:

代码语言:txt
复制
package com.mayus.crowdwash_android;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import java.net.URL;

import static com.mayus.crowdwash_android.WebContent.web;

public class Login extends AppCompatActivity {

    static Login login;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        login = this;
        setContentView(R.layout.activity_login);


        Button debug = findViewById(R.id.debug);
        debug.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent client = new Intent(Login.this, Client.class);
                startActivity(client);
            }
        });
        Button signin = Login.getInstance().findViewById(R.id.button3);
        signin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                    System.out.println("Klick!");
                    //...
                    try {
                        //CrowdwashUser user = WebContent.getUserFromJson(WebContent.getLoginUser("Mayus", "TallerikIstKaka"));
                        WebContent web = new WebContent();
                        String user = web.getUserFromJson("Mayus", "TallerikIstKaka");

                        System.out.println(user);

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


                    if (false) {
                        Intent client = new Intent(Login.getInstance(), Client.class);
                        Login.getInstance().startActivity(client);
                    }


            }
        });



    }

    public static Login getInstance() {
        return login;
    }
}

java:

代码语言:txt
复制
package com.mayus.crowdwash_android;

import android.content.Intent;
import android.os.AsyncTask;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;

public class WebContent extends AsyncTask<URL, Integer, JSONObject> {

    JSONObject obj;
    static WebContent web;
    static android.view.View.OnClickListener listener;

    private static String readAll(Reader rd) throws IOException {
        StringBuilder sb = new StringBuilder();
        int cp;
        while ((cp = rd.read()) != -1) {
            sb.append((char) cp);
        }
        return sb.toString();
    }

        public WebContent() {
            web = this;


        }


            //public String getUserFromJson(String name, String pw) throws Exception {
                /**WebContent webContent = new WebContent();
                 webContent.execute(new URL("http://tallerikyt.ddns.net:5000/login?user=" + "Mayus" + "&pw=" + "TallerikIstKaka"), null, null).get();
                 //new WebContent().execute(new URL("http://tallerikyt.ddns.net:5000/login?user=" + name + "&pw=" + pw), null, null);

                 if (obj.getBoolean("error")) {
                 return "";
                 } else {
                 return obj.getString("SessionID");
                 }**/
           // }
            /**
            public String getUserFromJson(String name, String pw) throws Exception {
            new WebContent().execute(new URL("http://tallerikyt.ddns.net:5000/login?user=" + name + "&pw=" + pw), null, null).get();
            if (obj.getBoolean("error")) {
                return "";
            } else {
                return obj.getString("SessionID");
            }**/

            public String getUserFromJson(String name, String pw) throws Exception {
                JSONObject data = new WebContent().execute(new URL("http://tallerikyt.ddns.net:5000/login?user=" + name + "&pw=" + pw), null, null).get();
                Log.d("From server" , data.toString());
                if (data.getBoolean("error")) {
                    return "";
                } else {
                    return data.getString("SessionID");
                }
            }




            @Override
            protected JSONObject doInBackground(URL... urls) {
                InputStream is = null;
                try {
                    is = urls[0].openStream();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
                    String jsonText = readAll(rd);
                    System.out.println("Test" + jsonText);
                    JSONObject json = new JSONObject(jsonText);
                    obj = json;
                    return json;
                } catch (JSONException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                return null;
            }
            public static WebContent getWeb() { return web; }




}

Former error

代码语言:txt
复制
07-30 21:00:17.788 15452-15452/com.mayus.crowdwash_android W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.mayus.crowdwash_android.WebContent.getUserFromJson(java.lang.String, java.lang.String)' on a null object reference
        at com.mayus.crowdwash_android.Login$2.onClick(Login.java:37)
        at android.view.View.performClick(View.java:6291)
        at android.view.View$PerformClick.run(View.java:24931)
        at android.os.Handler.handleCallback(Handler.java:808)
        at android.os.Handler.dispatchMessage(Handler.java:101)
        at android.os.Looper.loop(Looper.java:166)
07-30 21:00:17.789 15452-15452/com.mayus.crowdwash_android W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:7425)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

Older Classes:

代码语言:txt
复制
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Login extends AppCompatActivity {

static Login login;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    login = this;
    setContentView(R.layout.activity_login);


    Button debug = findViewById(R.id.debug);
    debug.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent client = new Intent(Login.this, Client.class);
            startActivity(client);
        }
    });
    Button signin = Login.getInstance().findViewById(R.id.button3);
    signin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

                System.out.println("Klick!");

                try {
                    //CrowdwashUser user = WebContent.getUserFromJson(WebContent.getLoginUser("Mayus", "TallerikIstKaka"));
                    String user = WebContent.getWeb().getUserFromJson("Mayus", "TallerikIstKaka");
                    System.out.println(user);

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


                if (false) {
                    Intent client = new Intent(Login.getInstance(), Client.class);
                    Login.getInstance().startActivity(client);
                }


        }
    });



}

public static Login getInstance() {
    return login;
}

}`WebContent.java:

代码语言:txt
复制
    package com.mayus.crowdwash_android;

import android.content.Intent;
import android.os.AsyncTask;
import android.view.View;
import android.widget.Button;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;

public class WebContent extends AsyncTask<URL, Integer, JSONObject> {

    JSONObject obj;
    static WebContent web;
    static android.view.View.OnClickListener listener;

    private static String readAll(Reader rd) throws IOException {
        StringBuilder sb = new StringBuilder();
        int cp;
        while ((cp = rd.read()) != -1) {
            sb.append((char) cp);
        }
        return sb.toString();
    }

        public WebContent() {
            web = this;


        }


            public String getUserFromJson(String name, String pw) throws Exception {
                new WebContent().execute(new URL("http://tallerikyt.ddns.net:5000/login?user=" + name + "&pw=" + pw), null, null);


                if (obj.getBoolean("error")) {
                    return "";
                } else {
                    return obj.getString("SessionID");
                }

            }

            @Override
            protected JSONObject doInBackground(URL... urls) {
                InputStream is = null;
                try {
                    is = urls[0].openStream();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
                    String jsonText = readAll(rd);
                    JSONObject json = new JSONObject(jsonText);
                    obj = json;
                    return json;
                } catch (JSONException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                return null;
            }
            public static WebContent getWeb() { return web; }




}

java:

代码语言:txt
复制
package com.mayus.crowdwash_android;

import java.io.IOException;

public class CrowdwashUser {
    String Name = "";
    String SessionID = "";
    boolean login = false;

    public CrowdwashUser(String name, String session) {
        System.out.println("CrowdwashUser");
        this.Name = name;
        this.SessionID = session;
        login =  true;
    }
    public CrowdwashUser() {
        login = false;
    }

    public String getUserName() {
            return Name;

    }

    public String getSessionID() {
        return SessionID;
    }

    public boolean isLogin() {

        return login;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-08-09 14:04:11

调用String user = WebContent.getWeb().getUserFromJson("Mayus", "TallerikIstKaka");方法,WebContent().getWeb()返回静态数据成员,该成员将在WebContent类被创建。

代码语言:txt
复制
WebContent web=new WebContent();
String user=web.getUserFromJson("Mayus", "TallerikIstKaka");`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档