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\npackage 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