簡體   English   中英

我在Android Studio中擴展AppCompatActivity時出錯

[英]Error when i extend AppCompatActivity in Android studio

您好,我的代碼提出了一個簡單的http請求,並返回了json。 我的代碼工作正常,但是當我嘗試擴展AppCompatActivity時(因為我想在設備屏幕上顯示json),它給了我多個錯誤,我的代碼如下

package com.vogella.java.library.okhttp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.IOException;
import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;
import org.json.JSONException;
import org.json.JSONObject;

public class TestMain extends AppCompatActivity {


OkHttpClient client = new OkHttpClient();

public static final MediaType JSON
        = MediaType.parse("application/json; charset=utf-8");


String doPostRequest(String url, String json) throws IOException {
    RequestBody body = RequestBody.create(JSON, json);
    Request request = new Request.Builder()
            .url(url)
            .post(body)
            .build();
    Response response = client.newCall(request).execute();
    return response.body().string();
}


public static void main(String[] args) throws IOException, JSONException {

    String username = "test";
    String password = "123";

    TestMain example = new TestMain();
    String json = "";
    String postResponse = example.doPostRequest("http://86.145.89.53:8080/authentication_service-dev/authenticate?username=" + username + "&password=" + password, json);

    int counter = postResponse.length();

    if (counter == 14) {
        System.out.println("Your username or password is invalid!!");
    }
    if (counter > 1000) {
        System.out.println("HTTP Status 401 – Unauthhorized");
    }
    if (counter < 1000 && counter > 14) {
        System.out.println("Welcome!!");
    }
}}

錯誤是:

Exception in thread "main" java.lang.RuntimeException: Stub!
at android.content.Context.<init>(Context.java:20)
at android.content.ContextWrapper.<init>(ContextWrapper.java:21)
at android.view.ContextThemeWrapper.<init>(ContextThemeWrapper.java:21)
at android.app.Activity.<init>(Activity.java:22)
at android.support.v4.app.SupportActivity.<init>(SupportActivity.java:31)
at android.support.v4.app.BaseFragmentActivityGingerbread.<init>(BaseFragmentActivityGingerbread.java:37)
at android.support.v4.app.BaseFragmentActivityHoneycomb.<init>(BaseFragmentActivityHoneycomb.java:29)
at android.support.v4.app.BaseFragmentActivityJB.<init>(BaseFragmentActivityJB.java:30)
at android.support.v4.app.FragmentActivity.<init>(FragmentActivity.java:79)
at android.support.v7.app.AppCompatActivity.<init>(AppCompatActivity.java:61)
at com.vogella.java.library.okhttp.TestMain.<init>(TestMain.java:18)
at com.vogella.java.library.okhttp.TestMain.main(TestMain.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

您不要在Android開發人員中使用public static void main 在活動中,使用onCreate:

@Override
public void onCreate(Bundle sis){
    super.onCreate(sis);
    //Move the contents of "public static void main" here
}

移動代碼后,請刪除public static void main

Android活動必須具有onCreate()方法,當您使用AppCompactAcitvity擴展任何類時,它必須實現一些方法

更改您的代碼,刪除main方法, add onCreate()並在那里做一些事情。

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

看一下活動的生命周期鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM