2017-01-10 98 views
0

我正在嘗試使用volley獲取數組列表並將其顯示在微調框中,但我的應用崩潰了。 這裏是應用android spinner加載json崩潰

package com.example.shivadeeps.webservice; 

import android.content.Context; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Config; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.ImageLoader; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.StringRequest; 
import com.android.volley.toolbox.Volley; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import org.json.JSONObject; 

import java.util.ArrayList; 
import static java.lang.Character.getName; 

public class MainActivity extends AppCompatActivity { 
private Spinner spinner; 
private ArrayList<String> trips; 
private JSONArray result; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    trips= new ArrayList<String>(); 
    this.spinner = (Spinner) findViewById(R.id.spinner); 
    spinner.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this); 
    loadtrip(); 
} 
public void loadtrip() { 
    StringRequest stringRequest = new StringRequest(config.DATA_URL, 
      new Response.Listener<String>() { 
       public void onResponse(String response) { 
        JSONObject j = null; 
        try { 
         j = new JSONObject(response); 
         result = j.getJSONArray(config.JSON_ARRAY); 
         getStudents(result); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
       } 
      }); 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 
} 
private void getStudents(JSONArray j){ 
    for(int i=0;i<j.length();i++){ 
     try { 
      JSONObject json = j.getJSONObject(i); 
      trips.add(json.getString(config.DATA_URL)); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    //Setting adapter to show the items in the spinner 
    spinner.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item,trips)); 
} 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    String item = parent.getItemAtPosition(position).toString(); 
    Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show(); 
} 
public void onNothingSelected(AdapterView<?> parent) { 


} 


} 

XML代碼的主要活動:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/red" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.shivadeeps.webservice.MainActivity"> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="23" /> 

<Spinner 
    android:id="@+id/spinner" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="80dp" 

    android:layout_marginTop="100dp" ></Spinner> 
<TextView 
    android:id="@+id/text_id" 
    android:layout_width="300dp" 
    android:layout_height="200dp" 
    android:textColor="@android:color/holo_blue_dark" 
    android:textColorHighlight="@android:color/primary_text_dark" 
    android:layout_centerVertical="true" 
    android:textSize="50dp"/> 
    </RelativeLayout> 

這裏是logcat的

11月1日至10日:29:25.226 12404-12404/COM。 example.shivadeeps.webservice
E/AndroidRuntime:致命異常:主要 進程:com.example.shivadeeps.webservice,PID:12404 java.lang.RuntimeException:無法啓動活動 ComponentInfo {com.example.shivadeeps.webservice/com.example.shivadeeps.webservice.MainActivity}: android.view.InflateException:二進制XML文件行#13:錯誤 inflate類使用許可權 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3190) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300) 在android.app.ActivityThread.access $ 1000(ActivityThread .java:211) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1705)在android.app.ActivityThread.main(ActivityThread.java:6946) 在android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit。 java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 引起:android.view.InflateException:二進制XML文件行#13: 錯誤使用類使用權限 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 在android.view.LayoutInflater.inflate(LayoutInflater.java:511) 在android.view.LayoutInflater.inflate(LayoutInflater.java:415) at android.view.LayoutInflater.inflate(LayoutInflater.java:366) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java: 284) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143) 在 com.example.shivadeeps.webservice.MainActivity.onCreate(MainActivity.java:40) 在android.app.Activity.performCreate(Activity.java:6575) 在 android.app.Instrumentation.callActivityOnCreate(儀表。 java:1134) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3143) at android.app.ActivityThread.handleLaunchActivity(ActivityThread。java:3300) at android.app.ActivityThread.access $ 1000(ActivityThread.java:211) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1705) at android.os.Handler.dispatchMessage( Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6946) at java.lang.reflect.Method.invoke(本地方法) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.jav a:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 引起:java.lang.ClassNotFoundException:沒有找到類 「android.view.uses-permission」on路徑:DexPathList [[zip文件 「/data/app/com.example.shivadeeps.webservice-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik。在android.view上的java.lang.ClassLoader.loadClass(ClassLoader.java:469) 上的java.lang.ClassLoader.loadClass(ClassLoader.java:511) 。 LayoutInflater.createView(佈局Inflater.java:578) 在android.view.LayoutInflater.onCreateView(LayoutInflater.java:672) 在 com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:65) 在android.view .LayoutInflater.onCreateView(LayoutInflater.java:689) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 在android.view。 LayoutInflater.inflate(LayoutInflater.java:511) at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 在android.view.LayoutInflater.inflate(LayoutInflater.java:366) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 在 android.support.v7.app.AppCompatActivity。的setContentView(AppCompatActivity.java:143) 在 com.example.shivadeeps.webservice.MainActivity.onCreate(MainActivity.java:40) 在android.app.Activity.performCreate(Activity.java:6575) 在 機器人。 app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134) at android.a pp.ActivityThread.performLaunchActivity(ActivityThread.java:3143) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300) 在android.app.ActivityThread.access $ 1000(ActivityThread.java:211) 在 機器人.app.ActivityThread $ H.handleMessage(ActivityThread.java:1705) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android .app.ActivityThread.main(ActivityThread.java:6946) at java.lang.reflect.Method.invoke(Native Method) 在java.lang.reflect。Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :1199) Suppressed:java.lang.ClassNotFoundException:找不到路徑中的類 「android.view.uses-permission」:DexPathList [[dex文件 「/ data/data/com.example.shivadeeps.webservice/ files/instant-run/dex/slice-support-annotations-25.0.1_485a49a20ae18735d596aaa75d964eacffc01e9a-classes.dex「, dex file 」/data/data/com.example.shivadeeps.webservice/files/instant-run/dex/slice -slice_9-classes.dex「, dex文件 」/data/data/com.example.shivadee ps.webservice/files/instant-run/dex/slice-slice_8-classes.dex「, dex file 」/data/data/com.example.shivadeeps.webservice/files/instant-run/dex/slice-slice_7 -class.dex「, dex文件 」/data/data/com.example.shivadeeps.webservice/files/instant-run/dex/slice-slice_6-classes.dex「, dex文件 」/ data/data /com.example.shivadeeps.webservice/files/instant-run/dex/slice-slice_5-classes.dex「, dex文件 」/data/data/com.example.shivadeeps.webservice/files/instant-run/ dex/slice-slice_4-classes.dex「, dex文件 」/data/data/com.example.shivadeeps.webservice/files/instant-run/dex/slice-slice_3-classes.dex「, dex文件 「/data/data/com.ex ample.shivadeeps.webservice/files/instant-run/dex/slice-slice_2-classes.dex「, dex file 」/data/data/com.example.shivadeeps.webservice/files/instant-run/dex/slice -slice_1-classes.dex「, dex file」/data/data/com.exa 01-10 11:29:25.231 2827-3392 /? W/ActivityManager:強制整理活動1 com.example.shivadeeps.webservice/.MainActivity 01-10 11:29:25.241 2827-3392 /? D/InputDispatcher:專注應用程序設置爲:xxxx 01-10 11:29:25.311 12691-12691 /? D/Mms/MmsApp:[start] initCountryIso 消耗時間= 103.6345 01-10 11:29:25.316 2827-3621 /? D/CountryDetector:添加第一個監聽者01-10 11:29:25.321 12691-12691 /? D/Mms/MmsApp:[end] initCountryIso消耗時間= 9.456961 01-10 11:29:25.416 2156-11978 /? I/display:[PrimaryDisplay] [DYNAMIC_RECOMP] GLES_2_HWC by BW check 01-10 11:29:25.436 11562-11587 /? I/Icing:Indexing 7491238841BD1692167B469A759AF4A2F8E28FA8 from com.google.android.googlequicksearchbox 01-10 11:29:25.486 2827-3114 /? E/Watchdog:!@Sync 5200 [01-10 11:29:25.488] 01-10 11:29:25.531 12691-12691 /? D/Mms/MmsConfig:[start] MmsConfig.init()消耗 time = 210.034154 01-10 11:29:25.546 2827-3392 /? I /窗口管理: 截圖最大重試令牌的4 {1ad8e437 ActivityRecord {3b472d36 U0 com.example.shivadeeps.webservice/.MainActivity T440 F}} appWin =窗口{2e5a232f U0 D0開始 com.example.shivadeeps.webservice} drawState = 4 01-10 11:29:25.551 12691-12691 /? D/EasySignUpManager_1.15.0305:isAuth爲假01-10 11:29:25.551 2827-12720 /? E/android.os.Debug:ro.product_ship = true 01-10 11:29:25.551 2827-12720 /? E/android.os.Debug:ro.debug_level = 0x4f4c 01-10 11:29:25.556 12691-12691 /? D/Mms/MmsConfig: getEasySignUpStatus sIsAuthEasySignUp = false, TelephonyUtils.getSimState(0)= 1 01-10 11:29:25.556 2827-2852 /? D/PhoneWindow:FMB installDecor mIsFloating:true 01-10 11:29:25.556 2827-2852 /? D/PhoneWindow:FMB installDecor flags: 8519682 01-10 11:29:25.556 12691-12691 /? D/EasySignUpManager_1.15.0305:serviceId:1,特徵:-1 01-10 11:29:25.556 12691-12691 /? D/EasySignUpManager_1.15.0305:isAuth爲 false 01-10 11:29:25.556 12691-12691 /? D/EasySignUpManager_1.15.0305: getServiceStatus:serviceId(1)關閉01-10 11:29:25.556 12691-12691 /? D/Mms/MmsConfig:setFreeMessageEnabled, getSupportedFeatures = -1 sIsAuthEasySignUp = false sIsFreeMessageServiceStatus = false 01-10 11:29:25.556 12691-12691 /? D/Mms/MmsConfig:Load Resize quality:80 01-10 11:29:25.561 12691-12691 /? E/CscParser:mps_code.dat不存在01-10 11:29:25.566 12691-12691 /? E/CscParser:customer_path =/system/csc/customer.xml 01-10 11:29:25.566 12691-12691 /? E/CscParser:文件名+ /system/csc/customer.xml

+0

您的xml代碼錯誤。在這裏發佈 –

+0

問題出在'XML文件' –

+0

刪除該權限表單xml並將其添加到清單中... – MLN

回答

0

檢查這行代碼中的spinner.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this);

您的設置點擊收聽「本」,但你的行爲沒有實施 「適配器視圖。 OnItemSelectedListener」

您的活動應該實現AdapterView.OnItemSelectedListener

+0

spinner.setOnItemSelectedListener(this);給我一個錯誤 – phoenixshiv

+0

膨脹異常是由於Jagjit提到的清單中沒有「Internet權限」。另外,直到你的活動實現了「AdapterView.OnItemSelectedListener」,行spinner.setOnItemSelectedListener(this);會拋出錯誤。 – Praveen

+0

添加權限後,修改您的活動到公共類MainActivity擴展AppCompatActivity實現AdapterView.OnItemSelectedListener並添加所需的方法 – Praveen

0

對不起,我不能因信譽發表評論,但你可以請更新與activity_main.xml中文件來源你的問題。很可能它在第13行有錯誤,請分享。

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="23" /> 

請從您的XML 刪除這些行這些行應該只插入在AndroidManifest.xml沒有任何layour文件。

+0

我已將其刪除 – phoenixshiv

+0

微調不會加載數據 – phoenixshiv

+0

您是否在AndroidManifest.xml中添加了Internet權限?您只需在Volley在onResponse()方法中通過調用getStudents()的響應之後加載項目。所以請檢查你的AndroidManifest.xml文件。 –

1

請從XML

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="23" /> 

刪除此並將其添加到清單文件。這將解決您的問題。 權限始終添加在清單文件中,而不是XML文件中。

+0

它沒有工作 – phoenixshiv

+0

@phoenixshiv請發佈logcat –

+0

我已經發布了它 – phoenixshiv