无法实例化活动 - android studio

Dan*_* N. 1 java android class

我正在 android studio 中制作一个应用程序,当启动我的一项活动时,应用程序崩溃并表示无法实例化该活动。

\n\n

我检查了清单文件,活动名称带有红色下划线,上面写着“X 不是具体类 - 验证 Android XML 文件中的资源”。

\n\n

任何帮助将不胜感激,我不知道为什么这不起作用。我是开发新手,所以如果这是一个愚蠢的问题,我真的很抱歉/请原谅我的,我确信,糟糕的代码。

\n\n

这是我运行应用程序时遇到的错误

\n\n
    07-12 10:01:50.260 918-3861/? I/ActivityManager: START u0 {cmp=com.example.daniel.digit/.Results (has extras)} from uid 10226 on display 0\n07-12 10:01:50.276 27379-27379/com.example.daniel.digit E/AndroidRuntime: FATAL EXCEPTION: main\n                                                                          Process: com.example.daniel.digit, PID: 27379\n                                                                          java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.daniel.digit/com.example.daniel.digit.Results}: java.lang.InstantiationException: java.lang.Class<com.example.daniel.digit.Results> cannot be instantiated\n                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)\n                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)\n                                                                              at android.app.ActivityThread.-wrap11(ActivityThread.java)\n                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)\n                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)\n                                                                              at android.os.Looper.loop(Looper.java:148)\n                                                                              at android.app.ActivityThread.main(ActivityThread.java:5422)\n                                                                              at java.lang.reflect.Method.invoke(Native Method)\n                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)\n                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)\n                                                                           Caused by: java.lang.InstantiationException: java.lang.Class<com.example.daniel.digit.Results> cannot be instantiated\n                                                                              at java.lang.Class.newInstance(Native Method)\n                                                                              at android.app.Instrumentation.newActivity(Instrumentation.java:1067)\n                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)\n                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)\xc2\xa0\n                                                                              at android.app.ActivityThread.-wrap11(ActivityThread.java)\xc2\xa0\n                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)\xc2\xa0\n                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)\xc2\xa0\n                                                                              at android.os.Looper.loop(Looper.java:148)\xc2\xa0\n                                                                              at android.app.ActivityThread.main(ActivityThread.java:5422)\xc2\xa0\n                                                                              at java.lang.reflect.Method.invoke(Native Method)\xc2\xa0\n                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)\xc2\xa0\n                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)\xc2\xa0\n07-12 10:01:50.281 918-4161/? W/ActivityManager:   Force finishing activity com.example.daniel.digit/.Results\n07-12 10:01:50.284 918-4161/? W/ActivityManager:   Force finishing activity com.example.daniel.digit/.Questions\n07-12 10:01:50.339 918-32759/? I/OpenGLRenderer: Initialized EGL, version 1.4\n07-12 10:01:50.682 3271-14700/? W/MessageQueue: Handler (akgv) {896094c} sending message to a Handler on a dead thread\n                                                java.lang.IllegalStateException: Handler (akgv) {896094c} sending message to a Handler on a dead thread\n                                                    at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)\n                                                    at android.os.Handler.enqueueMessage(Handler.java:631)\n                                                    at android.os.Handler.sendMessageAtTime(Handler.java:600)\n                                                    at android.os.Handler.sendMessageDelayed(Handler.java:570)\n                                                    at android.os.Handler.post(Handler.java:326)\n                                                    at rbv.a(:com.google.android.gms:1065)\n                                                    at akox.a(:com.google.android.gms:140)\n                                                    at akuj.a(:com.google.android.gms:374)\n                                                    at aksn.a(:com.google.android.gms:2077)\n                                                    at akll.a(:com.google.android.gms:93)\n                                                    at akmw.a(:com.google.android.gms:262)\n                                                    at akmx.run(:com.google.android.gms:2049)\n                                                    at akgv.handleMessage(:com.google.android.gms:233)\n                                                    at android.os.Handler.dispatchMessage(Handler.java:102)\n                                                    at android.os.Looper.loop(Looper.java:148)\n                                                    at android.os.HandlerThread.run(HandlerThread.java:61)\n07-12 10:01:50.785 918-931/? W/ActivityManager: Activity pause timeout for ActivityRecord{85c8890 u0 com.example.daniel.digit/.Results t49287 f}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是该活动的代码

\n\n
package com.example.daniel.digit;\n\nimport android.content.DialogInterface;\nimport android.content.Intent;\nimport android.graphics.Bitmap;\nimport android.os.Bundle;\nimport android.support.v7.app.AlertDialog;\nimport android.support.v7.app.AppCompatActivity;\nimport android.support.v7.widget.Toolbar;\nimport android.view.View;\nimport android.widget.Button;\nimport android.widget.ImageView;\nimport android.widget.TextView;\n\nimport com.google.android.gms.common.ConnectionResult;\nimport com.google.android.gms.common.api.GoogleApiClient;\nimport com.google.android.gms.location.places.PlacePhotoMetadata;\nimport com.google.android.gms.location.places.PlacePhotoMetadataBuffer;\nimport com.google.android.gms.location.places.PlacePhotoMetadataResult;\nimport com.google.android.gms.location.places.Places;\n\nimport org.json.JSONArray;\nimport org.json.JSONObject;\n\nimport java.util.List;\n\nimport se.walkercrou.places.GooglePlaces;\nimport se.walkercrou.places.GooglePlacesInterface;\nimport se.walkercrou.places.Param;\nimport se.walkercrou.places.Place;\nimport se.walkercrou.places.Price;\nimport se.walkercrou.places.exception.GooglePlacesException;\n\nabstract public class Results extends AppCompatActivity\n        implements GooglePlacesInterface { //, GoogleApiClient.OnConnectionFailedListener {\n\n    //Variables via intent from Questions\n    Intent resultsIntent = getIntent();\n    public String APIKEY = resultsIntent.getStringExtra("API_KEY"); //API Key\n    public String RestaurantType = resultsIntent.getStringExtra("RestaurantType"); //Restaurant Type\\\n    public String Coordinates = resultsIntent.getStringExtra("Coordinates"); //Restaurant Type\n    public Integer CostValue = resultsIntent.getIntExtra("CostValue", 0); //Cost Value\n    public String API_URL = resultsIntent.getStringExtra("URI"); //API Request URI from URL Builder\n\n    //Variables for view and card elements\n    private TextView TextViewName1;\n    private TextView TextViewName2;\n    private ImageView Restaurant1Image;\n    private ImageView Restaurant2Image;\n\n    //Static variables\n    public static int price;\n    public static double Lat;\n    public static double Lng;\n    public static double Rating;\n    public static String PlaceId;\n    public static String Name;\n    public static String PhotoRef;\n\n    public GooglePlaces client;\n    public List<Place> placesList;\n    public String query;\n    public String maxcost;\n    public String mincost;\n    public int counter = 0;\n    //private GoogleApiClient mGoogleApiClient;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_results);\n        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);\n        setSupportActionBar(toolbar);\n\n        getSupportActionBar().setDisplayHomeAsUpEnabled(true);\n\n        //TextView variables\n        TextViewName1 = (TextView) findViewById(R.id.restaurant1Name);\n        TextViewName2 = (TextView) findViewById(R.id.restaurant2Name);\n\n        //ImageView variables\n        Restaurant1Image = (ImageView) findViewById(R.id.restaurant1Photo);\n        Restaurant2Image = (ImageView) findViewById(R.id.restaurant2Photo);\n\n        //sets query and mincost and maxcost\n        query = (RestaurantType.equals("NO_TYPE") || RestaurantType.equals("Anything")) ? "Restaurant" : RestaurantType + "+Restaurant";\n        mincost = (CostValue == 0) ? "0" : Integer.toString(CostValue - 2);\n        maxcost = (CostValue == 0) ? "4" : Integer.toString(CostValue - 1);\n        GooglePlaces client = new GooglePlaces(APIKEY);\n\n        List<Place> placesList = client.getPlacesByQuery(query, Param.name("location").value(Coordinates),\n                Param.name("minprice").value(mincost), Param.name("maxprice").value(maxcost),\n                Param.name("opennow").value(true), Param.name("radius").value(MAXIMUM_RADIUS),\n                Param.name("rankby=distance").value(true), Param.name("key").value(APIKEY));\n    }\n\n    public void btnRefreshOnClick (View v) {\n        //run restaurantDetails twice\n        restaurantDetails(counter);\n        restaurantDetails(counter+1);\n\n        //increase counter by 2\n        counter = counter + 2;\n    }\n\n    public void restaurantDetails(int counter) {\n        try {\n            parse(client, placesList, getRequestHandler().get(API_URL), counter);\n        } catch(Exception e) {\n            throw new GooglePlacesException(e);\n        }\n        TextView restaurantName = ((counter%2) == 0) ? TextViewName1 : TextViewName2;\n            //Assign name to TextView\n            restaurantName.setText(Name);\n}\n\n   protected static void checkStatus(String statusCode, String errorMessage) {\n        GooglePlacesException e = GooglePlacesException.parse(statusCode, errorMessage);\n        if (e != null)\n            throw e;\n    }\n\n    public static String parse(GooglePlaces client, List<Place> places, String str, int counter) {\n        try {\n            // parse json\n            JSONObject json = new JSONObject(str);\n\n            // check root elements\n            String statusCode = json.getString(STRING_STATUS);\n            checkStatus(statusCode, json.optString(STRING_ERROR_MESSAGE));\n            if (statusCode.equals(STATUS_ZERO_RESULTS))\n                return null;\n\n            JSONArray results = json.getJSONArray(ARRAY_RESULTS);\n            parseTextSearch(client, places, results, counter);\n\n            return json.optString(STRING_NEXT_PAGE_TOKEN, null);\n        }\n        catch(Exception e){\n            throw new GooglePlacesException(e);\n        }\n    }\n\n    public static void parseTextSearch(GooglePlaces client, List<Place> places, JSONArray results,int counter) {\n        try {\n            if (counter >= results.length())\n                return;\n\n            JSONObject result = results.getJSONObject(counter);\n\n            //Location\n            JSONObject location = result.getJSONObject(OBJECT_GEOMETRY).getJSONObject(OBJECT_LOCATION);\n            double Lat = location.getDouble(DOUBLE_LATITUDE);\n            double Lng = location.getDouble(DOUBLE_LONGITUDE);\n\n            String PlaceId = result.getString(STRING_PLACE_ID);\n            String Name = result.optString(STRING_NAME);\n            String PhotoRef = result.getString(STRING_PHOTO_REFERENCE);\n            double Rating = result.optDouble(DOUBLE_RATING, -1);\n\n            boolean priceDefined = result.has(INTEGER_PRICE_LEVEL);\n            Price price = Price.NONE;\n            if (priceDefined) {\n                price = Price.values()[result.getInt(INTEGER_PRICE_LEVEL)];\n            }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果相关的话,清单文件

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<manifest xmlns:android="http://schemas.android.com/apk/res/android"\n    xmlns:tools="http://schemas.android.com/tools"\n    package="com.example.daniel.digit">\n\n    <uses-permission android:name="android.permission.INTERNET" />\n\n    <application\n        android:allowBackup="true"\n        android:icon="@mipmap/ic_launcher"\n        android:label="@string/app_name"\n        android:supportsRtl="true"\n        android:theme="@style/AppTheme"\n        tools:replace="android:icon,android:theme">\n        <activity\n            android:name=".SplashActivity"\n            android:theme="@style/SplashTheme">\n            <intent-filter>\n                <action android:name="android.intent.action.MAIN" />\n\n                <category android:name="android.intent.category.LAUNCHER" />\n            </intent-filter>\n        </activity>\n        <activity\n            android:name=".MainActivity"\n            android:label="@string/app_name"\n            android:theme="@style/AppTheme.NoActionBar">\n        </activity>\n        <activity\n            android:name=".Questions"\n            android:label="@string/title_activity_questions"\n            android:parentActivityName=".MainActivity"\n            android:theme="@style/AppTheme.NoActionBar">\n            <meta-data\n                android:name="android.support.PARENT_ACTIVITY"\n                android:value="com.example.daniel.digit.MainActivity" />\n        </activity>\n\n        <uses-library\n            android:name="com.android.volley"\n            android:required="false" />\n\n        <activity\n            android:name=".Results"\n            android:label="@string/title_activity_results"\n            android:parentActivityName=".Questions"\n            android:theme="@style/AppTheme.NoActionBar">\n            <meta-data\n                android:name="android.support.PARENT_ACTIVITY"\n                android:value="com.example.daniel.digit.Questions"/>\n        </activity>\n        <meta-data android:name="com.google.android.geo.API_KEY" android:value="AIzaSyDvyih-7txW-4ajp8whWMZj5RsuUfORIoo"/>\n    </application>\n\n</manifest>\n
Run Code Online (Sandbox Code Playgroud)\n

小智 16

去掉class中的abstract关键字