ANDROID:在 HTTP 请求后启动 Activity 时应用程序崩溃

标签 android android-activity crash httprequest

我有一个问题要快速解决:)
我有这个代码:

loginBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            HttpRequest hr = new HttpRequest();
            String response = hr.LoginRequest(emailText.getText().toString(), pwdText.getText().toString());
            res.setText(response);
            res.setVisibility(0);

            if(response.equals("pr_code_0101")) {
                Login.this.startActivity(bcard_intent);
            }
        }
    });

startActivity 失败,我的应用程序崩溃,我遇到了问题:它是带有 LoginRequest 的 HttpRequest,它是我创建的自定义类,如果我删除这 2 行代码, Activity 就会开始......

Http的代码
public String LoginRequest(String email, String password)
{
    List<NameValuePair> nvp = new ArrayList<NameValuePair>(3);
    nvp.add(new BasicNameValuePair("email", email));
    nvp.add(new BasicNameValuePair("password", password));
    nvp.add(new BasicNameValuePair("hash_app", hash_code));

    return Set("******/loginrequest.php", nvp);
}

public String Set(String url,List<NameValuePair> list)
{
     StringBuilder builder = new StringBuilder();
     HttpClient client = new DefaultHttpClient();
     HttpPost httpPost = new HttpPost(url);

     try {
        httpPost.setEntity(new UrlEncodedFormEntity(list));
        HttpResponse response = client.execute(httpPost);

        HttpEntity entity = response.getEntity();
        InputStream content = entity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(content));
        String line;
        while ((line = reader.readLine()) != null)
        {
           builder.append(line);
        } 

        reader.close();
        content.close();

     }
     catch (ClientProtocolException e) {
         return e.toString();
     }
     catch (IOException e) {
         return e.toString();
    }

     return builder.toString();
}

我该如何解决我的问题??

这里是logcat:
 01-20 11:25:42.824: E/AndroidRuntime(274): java.lang.RuntimeException: Unable to start activity ComponentInfo{name.printernet.app/name.printernet.app.BCard}: android.view.InflateException: Binary XML file line #7: Error inflating class <unknown>

最佳答案

在将您的 HTTP 请求放在首位之前,您需要使用连接管理器检查您是否与其中任何一个连接

无线上网

或者

移动数据检查这个第一次在 list 文件中添加以下权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

然后在你的类里面检查可用性
    ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

//mobile
State mobile = conMan.getNetworkInfo(0).getState();

//wifi
State wifi = conMan.getNetworkInfo(1).getState();

然后像这样使用它:
if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
    //mobile
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
    //wifi
}

之后发送发送 HTTP 请求
因为HTTP请求有一个标准,它应该有一个像wifi或移动网络这样的驱动程序,用你的信息把他带到外面的世界希望这会对你有所帮助

关于ANDROID:在 HTTP 请求后启动 Activity 时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14423433/

相关文章:

java - 禁用某些 Android Studio 编译错误

java - 在 NumberPicker 中设置数字的默认值

带有 onClick 项目的 Android ListView

android - Android 中的 BLE 广告

android - 对于区域设置 "ar"(阿拉伯语),还应定义以下数量 : few, 多个、两个、零

android - 在 Activity 之间保留 fragment 状态

c - malloc() 函数崩溃

web-scraping - 错误: Page crashed! at Page._onTargetCrashed PUPPETEER

c# - C#命令行脚本在Visual Studio中过早结束

android - ARCore+Unity3D : How to make a scene oriented to north?