Java 我的应用程序可以编译,但运行时会崩溃

Java 我的应用程序可以编译,但运行时会崩溃,java,android,casting,Java,Android,Casting,我目前正在开发我的Java编码技能,我创建了以下代码,通过HTTP协议和我网站上的.php脚本将我的应用程序连接到互联网 package com.example.markmakarovskiy.myapplication; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; impo

我目前正在开发我的Java编码技能,我创建了以下代码,通过HTTP协议和我网站上的.php脚本将我的应用程序连接到互联网

    package com.example.markmakarovskiy.myapplication;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    private static String LOG_TAG = "MainActivity";
    TextView TxtResult;
    Button PostBtn, GetBtn;

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

        GetBtn = (Button) findViewById(R.id.get_btn);
        PostBtn = (Button) findViewById(R.id.post_btn);

        GetBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new MakeNetworkCall().execute("http://futurama.club/android.php?get=1", "Get");
            }

        });

        PostBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new MakeNetworkCall().execute("http://futurama.club/android.php?post=1", "Post");
            }
        });


    }

    InputStream ByGetMethod(String ServerURL) {

        InputStream DataInputStream = null;
        try {

            URL url = new URL(ServerURL);
            HttpURLConnection cc = (HttpURLConnection)
                    url.openConnection();
            //set timeout for reading InputStream
            cc.setReadTimeout(5000);
            // set timeout for connection
            cc.setConnectTimeout(5000);
            //set HTTP method to GET
            cc.setRequestMethod("GET");
            //set it to true as we are connecting for input
            cc.setDoInput(true);

            //reading HTTP response code
            int response = cc.getResponseCode();

            //if response code is 200 / OK then read Inputstream
            if (response == HttpURLConnection.HTTP_OK) {
                DataInputStream = cc.getInputStream();
            }

        } catch (Exception e) {
            Log.e(LOG_TAG, "Error in GetData", e);
        }
        return DataInputStream;

    }

    InputStream ByPostMethod(String ServerURL) {

        InputStream DataInputStream = null;
        try {

            //Post parameters
            String PostParam = "first_name=Mark&last_name=Ardman";

            //Preparing
            URL url = new URL(ServerURL);

            HttpURLConnection cc = (HttpURLConnection)
                    url.openConnection();
            //set timeout for reading InputStream
            cc.setReadTimeout(5000);
            // set timeout for connection
            cc.setConnectTimeout(5000);
            //set HTTP method to POST
            cc.setRequestMethod("POST");
            //set it to true as we are connecting for input
            cc.setDoInput(true);
            //opens the communication link
            cc.connect();

            //Writing data (bytes) to the data output stream
            DataOutputStream dos = new DataOutputStream(cc.getOutputStream());
            dos.writeBytes(PostParam);
            //flushes data output stream.
            dos.flush();
            dos.close();

            //Getting HTTP response code
            int response = cc.getResponseCode();

            //if response code is 200 / OK then read Inputstream
            //HttpURLConnection.HTTP_OK is equal to 200
            if(response == HttpURLConnection.HTTP_OK) {
                DataInputStream = cc.getInputStream();
            }

        } catch (Exception e) {
            Log.e(LOG_TAG, "Error in GetData", e);
        }
        return DataInputStream;

    }

    String ConvertStreamToString(InputStream stream) {

        InputStreamReader isr = new InputStreamReader(stream);
        BufferedReader reader = new BufferedReader(isr);
        StringBuilder response = new StringBuilder();

        String line = null;
        try {

            while ((line = reader.readLine()) != null) {
                response.append(line);
            }

        } catch (IOException e) {
            Log.e(LOG_TAG, "Error in ConvertStreamToString", e);
        } catch (Exception e) {
            Log.e(LOG_TAG, "Error in ConvertStreamToString", e);
        } finally {

            try {
                stream.close();

            } catch (IOException e) {
                Log.e(LOG_TAG, "Error in ConvertStreamToString", e);

            } catch (Exception e) {
                Log.e(LOG_TAG, "Error in ConvertStreamToString", e);
            }
        }
        return response.toString();


    }

    public void DisplayMessage(String a) {

        TxtResult = (TextView) findViewById(R.id.response);
        TxtResult.setText(a);
    }

    private class MakeNetworkCall extends AsyncTask<String, Void, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            DisplayMessage("Please Wait ...");
        }

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

            InputStream is = null;
            String URL = arg[0];
            Log.d(LOG_TAG, "URL: " + URL);
            String res = "";


            if (arg[1].equals("Post")) {

                is = ByPostMethod(URL);

            } else {

                is = ByGetMethod(URL);
            }
            if (is != null) {
                res = ConvertStreamToString(is);
            } else {
                res = "Something went wrong";
            }
            return res;
        }

        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            DisplayMessage(result);
            Log.d(LOG_TAG, "Result: " + result);
        }
    }

}
package com.example.markmakarovskiy.myapplication;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入java.io.BufferedReader;
导入java.io.DataOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
公共类MainActivity扩展了AppCompatActivity{
私有静态字符串LOG_TAG=“MainActivity”;
TextView TxtResult;
按钮PostBtn,GetBtn;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GetBtn=(按钮)findviewbyd(R.id.get\u btn);
PostBtn=(按钮)findViewById(R.id.post\u btn);
GetBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
新建MakeNetworkCall()。执行(“http://futurama.club/android.php?get=1“,”得到“);
}
});
PostBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
新建MakeNetworkCall()。执行(“http://futurama.club/android.php?post=1“,”职位“);
}
});
}
InputStream ByGetMethod(字符串服务器URL){
InputStream数据InputStream=null;
试一试{
URL=新URL(服务器URL);
HttpURLConnection cc=(HttpURLConnection)
openConnection();
//设置读取InputStream的超时
cc.setReadTimeout(5000);
//设置连接超时
cc.setConnectTimeout(5000);
//将HTTP方法设置为获取
cc.setRequestMethod(“GET”);
//在连接输入时将其设置为true
cc.setDoInput(真);
//读取HTTP响应代码
int response=cc.getResponseCode();
//如果响应代码为200/OK,则读取Inputstream
if(response==HttpURLConnection.HTTP\u OK){
DataInputStream=cc.getInputStream();
}
}捕获(例外e){
Log.e(Log_标签,“GetData中的错误”,e);
}
返回数据输入流;
}
InputStream ByPostMethod(字符串服务器URL){
InputStream数据InputStream=null;
试一试{
//Post参数
String PostParam=“first\u name=Mark&;last\u name=Ardman”;
//准备
URL=新URL(服务器URL);
HttpURLConnection cc=(HttpURLConnection)
openConnection();
//设置读取InputStream的超时
cc.setReadTimeout(5000);
//设置连接超时
cc.setConnectTimeout(5000);
//将HTTP方法设置为POST
抄送setRequestMethod(“POST”);
//在连接输入时将其设置为true
cc.setDoInput(真);
//打开通信链接
cc.connect();
//将数据(字节)写入数据输出流
DataOutputStream dos=新的DataOutputStream(cc.getOutputStream());
dos.writeBytes(后参数);
//刷新数据输出流。
dos.flush();
dos.close();
//获取HTTP响应代码
int response=cc.getResponseCode();
//如果响应代码为200/OK,则读取Inputstream
//HttpURLConnection.HTTP_OK等于200
if(response==HttpURLConnection.HTTP\u OK){
DataInputStream=cc.getInputStream();
}
}捕获(例外e){
Log.e(Log_标签,“GetData中的错误”,e);
}
返回数据输入流;
}
字符串转换器StreamToString(InputStream){
InputStreamReader isr=新的InputStreamReader(流);
BufferedReader读取器=新的BufferedReader(isr);
StringBuilder响应=新建StringBuilder();
字符串行=null;
试一试{
而((line=reader.readLine())!=null){
响应。追加(行);
}
}捕获(IOE异常){
Log.e(Log_标签,“ConvertStreamToString中的错误”,e);
}捕获(例外e){
Log.e(Log_标签,“ConvertStreamToString中的错误”,e);
}最后{
试一试{
stream.close();
}捕获(IOE异常){
Log.e(Log_标签,“ConvertStreamToString中的错误”,e);
}捕获(例外e){
Log.e(Log_标签,“ConvertStreamToString中的错误”,e);
}
}
返回response.toString();
}
公共无效显示消息(字符串a){
TxtResult=(TextView)findViewById(R.id.response);
TxtResult.setText(a);
}
私有类MakeNetworkCall扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
显示消息(“请稍候…”);
}
@凌驾
受保护的字符串doInBackground(字符串…arg){
InputStream=null;
字符串URL=arg[0];
Log.d(Log_标签,“URL:+URL”);
字符串res=“”;
if(arg[1].equals(“Post”)){
is=ByPostMethod(URL);
}否则{
is=ByGetMethod(URL);
}
如果(is!=null){
res=转换流至串(is);
}否则{
res=“出了问题”;
}
返回res;
    <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.markmakarovskiy.myapplication.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:orientation="vertical">

        <Button
            android:id="@+id/get_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="15dp"
            android:text="@string/button"
            android:textSize="16sp" />

        <Button
            android:id="@+id/post_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="15dp"
            android:text="@string/post_method"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/response"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30sp" />

    </LinearLayout>

</android.support.constraint.ConstraintLayout>
08/05 13:53:19: Launching app
$ adb install-multiple -r -t C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\resources\instant-run\debug\resources-debug.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_6.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_5.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_7.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_9.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_8.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_3.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\dep\dependencies.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_4.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_2.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_1.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\split-apk\debug\slices\slice_0.apk C:\Users\Mark Makarovskiy\AndroidStudioProjects\MyApplication2\app\build\intermediates\instant-run-apk\debug\app-debug.apk 
Split APKs installed
$ adb shell am start -n "com.example.markmakarovskiy.myapplication/com.example.markmakarovskiy.myapplication.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Client not ready yet..Waiting for process to come online
Connected to process 25936 on device emulator-5554
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
W/y.myapplicatio: JIT profile information will not be recorded: profile file does not exits.
I/chatty: uid=10008(com.example.markmakarovskiy.myapplication) identical 10 lines
W/y.myapplicatio: JIT profile information will not be recorded: profile file does not exits.
I/InstantRun: starting instant run server: is main process
W/y.myapplicatio: JNI critical lock held for 19.291ms on Thread[1,tid=25936,Runnable,Thread*=0xe69da000,peer=0x73e171f0,"main"]
I/y.myapplicatio: Background concurrent copying GC freed 12750(2MB) AllocSpace objects, 0(0B) LOS objects, 54% free, 1268KB/2MB, paused 38.531ms total 657.847ms
W/y.myapplicatio: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
W/y.myapplicatio: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
W/y.myapplicatio: JNI critical lock held for 20.808ms on Thread[1,tid=25936,Runnable,Thread*=0xe69da000,peer=0x73e171f0,"main"]
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.markmakarovskiy.myapplication, PID: 25936
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.markmakarovskiy.myapplication/com.example.markmakarovskiy.myapplication.MainActivity}: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class <unknown>
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2902)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3037)
                      at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
                      at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
                      at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)
                      at android.os.Handler.dispatchMessage(Handler.java:106)
                      at android.os.Looper.loop(Looper.java:193)
                      at android.app.ActivityThread.main(ActivityThread.java:6642)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
                   Caused by: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class <unknown>
                   Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class <unknown>
                   Caused by: java.lang.reflect.InvocationTargetException
                      at java.lang.reflect.Constructor.newInstance0(Native Method)
                      at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
                      at android.view.LayoutInflater.createView(LayoutInflater.java:647)
                      at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
                      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
                      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                      at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
                      at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
                      at com.example.markmakarovskiy.myapplication.MainActivity.onCreate(MainActivity.java:27)
                      at android.app.Activity.performCreate(Activity.java:7131)
                      at android.app.Activity.performCreate(Activity.java:7122)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2882)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3037)
                      at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
                      at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
                      at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)
                      at android.os.Handler.dispatchMessage(Handler.java:106)
                      at android.os.Looper.loop(Looper.java:193)
                      at android.app.ActivityThread.main(ActivityThread.java:6642)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
                   Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 15 to dimension: type=0x4
                      at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:736)
                      at android.view.View.<init>(View.java:5030)
                      at android.view.ViewGroup.<init>(ViewGroup.java:659)
E/AndroidRuntime:     at android.widget.LinearLayout.<init>(LinearLayout.java:244)
                      at android.widget.LinearLayout.<init>(LinearLayout.java:240)
                      at android.widget.LinearLayout.<init>(LinearLayout.java:236)
                        ... 30 more
I/Process: Sending signal. PID: 25936 SIG: 9
Application terminated.