2016-08-09 26 views
-2

Sir ich bin sehr sehr noob in Android-Programmierung. vor kurzem versuche ich, api Link von yts.arg zu erstellen und zu versuchen, Daten in meiner Anwendung zu analysieren, so dass ich eine Liste von Filmen in meiner App präsentieren kann. Ich habe alles versucht, aber ich bekomme immer diese Ausnahme org.json.JSONException: Kein Wert gefunden .. in unten ich addiere alles pls Ich brauche Hilfe .... Ich bin neu im Stapel Überlauf Ich versuche mein Bestes zu fragen, eine Frage gd .. Aus dieser Tätigkeit i mein Fragment nenne:JSON-Daten werden nicht in meiner App angezeigt

package com.example.mehadi.pravashsirmat; 

import android.content.Intent; 
import android.graphics.drawable.Drawable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.app.NavUtils; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 

import it.neokree.materialtabs.MaterialTab; 
import it.neokree.materialtabs.MaterialTabHost; 
import it.neokree.materialtabs.MaterialTabListener; 

public class econd extends AppCompatActivity implements MaterialTabListener { 
    Toolbar toolbar; 
    MaterialTabHost materialTabHost; 
    ViewPager viewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_econd); 
     toolbar = (Toolbar) findViewById(R.id.ecotoolbar); 
     setSupportActionBar(toolbar); 
     //getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     materialTabHost = (MaterialTabHost) findViewById(R.id.materialTabHost); 
     viewPager = (ViewPager) findViewById(R.id.viewpagerfreco); 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(adapter); 
     viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 
       materialTabHost.setSelectedNavigationItem(position); 

      } 
     }); 
     for (int i = 0; i < adapter.getCount(); i++) { 
      materialTabHost.addTab(materialTabHost.newTab().setIcon(adapter.geticon(i)).setTabListener(this)); 
     } 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 


    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == android.R.id.home) { 

      // NavUtils.navigateUpFromSameTask(this); 
      Intent intent=new Intent(this,MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public void onTabSelected(MaterialTab tab) { 
     viewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabReselected(MaterialTab tab) { 

    } 

    @Override 
    public void onTabUnselected(MaterialTab tab) { 

    } 

    private class ViewPagerAdapter extends FragmentStatePagerAdapter { 
     public int[] pcons = {R.drawable.ic_account_circle_black_24dp1_user, R.drawable.ic_add_alert_black_24dp_alert, R.drawable.ic_home_black_24dp_home}; 

     public ViewPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      Fragment fragment = null; 
      if (position == 0) { 
       fragment = new Fragment_a(); 
      } 
      if (position == 1) { 
       fragment = new Fragment_b(); 
      } 
      if (position == 2) { 
       fragment = new Fragment_c(); 
      } 
      // Myfragment myfragment=new Myfragment(); 

      // Myfragment myfragment=Myfragment.getInstance(position); 
      //myfragment.getInstance(position); 
      return fragment; 
     } 

     @Override 
     public int getCount() { 
      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return getResources().getStringArray(R.array.tabs)[position]; 
     } 

     public Drawable geticon(int position) { 
      return getResources().getDrawable(pcons[position]); 
     } 

    } 
} 

Von diesem Fragment ich meine api nenne:

package com.example.mehadi.pravashsirmat; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
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.JsonObjectRequest; 
import com.android.volley.toolbox.Volley; 

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

/** 
* Created by MEHADI on 8/5/2016. 
*/ 
public class Fragment_a extends Fragment { 

    TextView textView; 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View layout = inflater.inflate(R.layout.for_frag_a, container, false); 
     textView = (TextView) layout.findViewById(R.id.textView_fr_a); 
     RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
     JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, "https://yts.ag/api/v2/list_movies.json", 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         //Toast.makeText(getContext(), response.toString(), Toast.LENGTH_LONG).show(); 
         //textView.setText(response.toString()); 
         parseJasonresponse(response); 
        } 

       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 

     requestQueue.add(request); 

     return layout; 
    } 

    public void parseJasonresponse(JSONObject response) { 
     if (response == null || response.length() == 0) { 
      return; 
     } 
     try { 
      StringBuffer data = new StringBuffer(); 

      JSONObject arrayob = response.getJSONObject("data:"); 
      JSONArray arrayobfrmovies = arrayob.getJSONArray("movies:"); 
      for (int i = 0; i < arrayobfrmovies.length(); i++) { 
       JSONObject currentmovies =arrayobfrmovies.getJSONObject(i); 
       String Title = currentmovies.getString("title:"); 
       data.append(Title + "\n"); 
      } 
      Toast.makeText(getContext(), data.toString(), Toast.LENGTH_LONG).show(); 


     } catch (JSONException e) { 
      //Toast.makeText(getContext(), , Toast.LENGTH_LONG).show(); 
      textView.setText("Error=" + e); 
      e.printStackTrace(); 
     } 

    } 
} 

i auch jason am Code für Filmliste hinzufügen:

https://yts.ag/api/v2/list_movies.json

+2

Zunächst einmal ist es, zu schaffen, ist JSON nicht Jason. – Jas

+3

Wer ist Jason und was machst du mit seinen Daten? –

+0

Ha ha nice one @AlexLogan .. Entfernen Sie ":" Zeichen von allen Sie Schlüssel ist zB "Daten:" wird "Daten". –

Antwort

0

Es scheint, dass seine "Daten" und "Filme" und "Titel" in JSON Link posted.So

"Daten:" ändern mit "Daten" und

"Filmen" mit "Filme" und

"title:" mit "Titel" dh

JSONObject arrayob = response.getJSONObject("data:"); 
      JSONArray arrayobfrmovies = arrayob.getJSONArray("movies:"); 
      for (int i = 0; i < arrayobfrmovies.length(); i++) { 
       JSONObject currentmovies =arrayobfrmovies.getJSONObject(i); 
       String Title = currentmovies.getString("title:"); 
       data.append(Title + "\n"); 
      } 

mit

ändern
JSONObject arrayob = response.getJSONObject("data"); 
      JSONArray arrayobfrmovies = arrayob.getJSONArray("movies"); 
      for (int i = 0; i < arrayobfrmovies.length(); i++) { 
       JSONObject currentmovies =arrayobfrmovies.getJSONObject(i); 
       String Title = currentmovies.getString("title"); 
       data.append(Title + "\n"); 
      } 
+0

danke sehr viel sir ... –

0

Ersetzen Sie diese

JSONObject arrayob = response.getJSONObject("data:"); 
    JSONArray arrayobfrmovies = arrayob.getJSONArray("movies:"); 

mit

JSONObject arrayob = response.getJSONObject("data"); 
    JSONArray arrayobfrmovies = arrayob.getJSONArray("movies"); 

entfernen Semikolon aus Filmen und Daten .Sie haben excat json Objektnamen

+0

danke sir für die hilfe mich –