2016-07-12 6 views
0

jsonデータを取得するためにVolleyライブラリを使用しています。私は、マニフェストを修正して、必要なインターネット許可を追加しました。しかし、私はアプリを実行するとクラッシュします。エラーが発生したたびにアプリケーションがクラッシュする "残念ながらMyApplication1が停止しました"

メインactivity.java

package com.example.sans.myapplication1; 

    import android.os.Bundle; 
    import android.support.design.widget.FloatingActionButton; 
    import android.support.design.widget.Snackbar; 
    import android.support.v7.app.AppCompatActivity; 
    import android.support.v7.widget.Toolbar; 
    import android.view.View; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.widget.ListView; 
    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.JsonObjectRequest; 
    import com.android.volley.toolbox.Volley; 

    import org.json.JSONArray; 
    import org.json.JSONObject; 

    import java.util.ArrayList; 
    import java.util.List; 

    public class MainActivity extends AppCompatActivity { 

     ListView listView; 
     RequestQueue requestQueue; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
      setSupportActionBar(toolbar); 

      FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
      fab.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
          .setAction("Action", null).show(); 
       } 
      }); 
      listView=(ListView)findViewById(R.id.list); 
      RequestQueue requestQueue= Volley.newRequestQueue(this); 

      JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, "http://api.themoviedb.org/3/movie/popular?api_key=fa468af9e769ba5fbc027e9e933130ed", 
        new Response.Listener<JSONObject>() { 
         @Override 
         public void onResponse(JSONObject response) { 

          ArrayList<Movie> movieList= new ArrayList<Movie>(); 
          try{ 
           JSONArray jsonArray=response.getJSONArray("results"); 
           for (int i=0;i< jsonArray.length();i++){ 
            JSONObject jsonObject= jsonArray.getJSONObject(i); 
            String title= jsonObject.getString("title"); 

            movieList.add(new Movie(title)); 
            MovieAdapter adapter= new MovieAdapter(getApplicationContext(),movieList); 
            listView.setAdapter(adapter); 

           } 


          }catch(Exception e){ 
           Toast.makeText(getApplicationContext(), "Error getting data", Toast.LENGTH_LONG).show(); 
          } 
         } 
        }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show(); 

         } 
        }); 
      requestQueue.add(jsonObjectRequest); 


     } 




    } 

$ MovieAdapter.java

package com.example.sans.myapplication1; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

import java.util.List; 

/** 
* Created by sans on 13/7/16. 
*/ 
public class MovieAdapter extends ArrayAdapter<Movie> { 


    public MovieAdapter(Context context, List<Movie> objects) { 
     super(context,0, objects); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     Movie movie=getItem(position); 
     if(convertView==null){ 
      convertView= LayoutInflater.from(getContext()).inflate(R.layout.list_row, parent); 
     } 
     TextView title=(TextView)convertView.findViewById(R.id.title); 
     title.setText(movie.getTitle()); 

     return convertView; 


    } 
} 

$ Movie.java

package com.example.sans.myapplication1; 

import android.app.Activity; 
import android.content.Context; 
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.JsonObjectRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONArray; 
import org.json.JSONObject; 

import java.util.ArrayList; 

/** 
* Created by sans on 13/7/16. 
*/ 

public class Movie { 
    private String title; 
    public Movie(String title){ 
     this.title=title; 

    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 


    public String getTitle() { 
     return title; 
    } 

} 

$ list_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="20dp"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="?attr/listPreferredItemHeight" 
     android:id="@+id/title"/> 

</LinearLayout> 
代わりに android:minHeight="?attr/listPreferredItemHeight"
変化

$ MovieAdapter.javaクラスの変更でcontent_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.example.sans.myapplication1.MainActivity" 
    tools:showIn="@layout/activity_main"> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/list" /> 
</RelativeLayout> 

ログのエラー

FATAL EXCEPTION: main 
               Process: com.example.sans.myapplication1, PID: 4252 
               java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference 
                at com.example.sans.myapplication1.MovieAdapter.getView(MovieAdapter.java:29) 
                at android.widget.AbsListView.obtainView(AbsListView.java:2346) 
                at android.widget.ListView.measureHeightOfChildren(ListView.java:1280) 
                at android.widget.ListView.onMeasure(ListView.java:1188) 
                at android.view.View.measure(View.java:18788) 
                at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715) 
                at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) 
                at android.view.View.measure(View.java:18788) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:668) 
                at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:735) 
                at android.view.View.measure(View.java:18788) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
                at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) 
                at android.view.View.measure(View.java:18788) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
                at android.view.View.measure(View.java:18788) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
                at android.view.View.measure(View.java:18788) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 
                at android.view.View.measure(View.java:18788) 
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
                at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643) 
                at android.view.View.measure(View.java:18788) 
                at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100) 
                at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216) 
                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452) 
                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) 
                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) 
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 
                at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
                at android.view.Choreographer.doFrame(Choreographer.java:606) 
                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 
                at android.os.Handler.handleCallback(Handler.java:739) 
                at android.os.Handler.dispatchMessage(Handler.java:95) 
                at android.os.Looper.loop(Looper.java:148) 
                at android.app.ActivityThread.main(ActivityThread.java:5417) 
                at java.lang.reflect.Method.invoke(Native Method) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
07-13 17:37:39.746 1532-1903/? W/ActivityManager: Force finishing activity com.example.sans.myapplication1/.MainActivity 

答えて

0

convertView!=null
list_row.xmlファイル内&
convertView==nullにそれ〜android:minHeight="?android:attr/listPreferredItemHeight"

関連する問題