2016-12-07 5 views
0

誰かがJSON値をonclick customlistviewをフラグメントからアクティビティに渡す方法を教えてください.... Lastest_fragment.javaからNews_Detail.java(新しいアクティビティ)に値を渡したいのですが... アプリケーションを実行するとエラーは発生しませんが私はJsonの価値がどのように断片から活動に移るのか?

public class LatestFragment extends Fragment { 

private static final String TAG = LatestFragment.class.getSimpleName(); 

// Movies json url 
private static final String url = "http://api.androidhive.info/json/movies.json"; 
private ProgressDialog pDialog; 
private List<Movie> movieList = new ArrayList<Movie>(); 
private ListView listView; 
private CustomListAdapter adapter; 
private static String Title="title"; 
private static String bitmap="thumbnailUrl"; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 


    View v = inflater.inflate(R.layout.latest_layout, container, false); 

    Intent intent2 = new Intent(); 
    getActivity().setResult(Activity.RESULT_OK, intent2); 
    // getActivity().finish(); 

    listView = (ListView) v.findViewById(R.id.list); 
    adapter = new CustomListAdapter(getActivity(), movieList); 
    listView.setAdapter(adapter); 

    pDialog = new ProgressDialog(getActivity()); 
    // Showing progress dialog before making http request 
    pDialog.setMessage("Loading..."); 
    pDialog.show(); 

    // changing action bar color 
    // getActivity().getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1b1b1b"))); 

    // Creating volley request obj 
    JsonArrayRequest movieReq = new JsonArrayRequest(url, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        Log.d(TAG, response.toString()); 
        hidePDialog(); 

        // Parsing json 
        for (int i = 0; i < response.length(); i++) { 
         try { 

          JSONObject obj = response.getJSONObject(i); 
          Movie movie = new Movie(); 
          movie.setTitle(obj.getString("title")); 
          movie.setThumbnailUrl(obj.getString("image")); 
          movie.setRating(((Number) obj.get("rating")) 
            .doubleValue()); 
          movie.setYear(obj.getInt("releaseYear")); 

          // Genre is json array 
          JSONArray genreArry = obj.getJSONArray("genre"); 
          ArrayList<String> genre = new ArrayList<String>(); 
          for (int j = 0; j < genreArry.length(); j++) { 
           genre.add((String) genreArry.get(j)); 
          } 
          movie.setGenre(genre); 

          // adding movie to movies array 
          movieList.add(movie); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 

        // notifying list adapter about data changes 
        // so that it renders the list view with updated data 
        adapter.notifyDataSetChanged(); 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      if (error instanceof NoConnectionError){ 
       Toast.makeText(getActivity().getBaseContext(), "Bummer..There's No Internet connection!", Toast.LENGTH_LONG).show(); 

      } 

     } 
    }); 

    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(movieReq); 
    //ParseApplication.getInstance().addToRequestQueue(movieReq); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
       // TODO Auto-generated method stub 
       String name = ((TextView) view.findViewById(R.id.title)).getText().toString(); 
       bitmap = ((Movie)movieList.get(position)).getThumbnailUrl(); 
       Intent intent = new Intent(getActivity(), News_Detail.class); 
       intent.putExtra(Title, name); 
       intent.putExtra("images", bitmap); 

       startActivity(intent); 
      } 
     }); 
    return v; 

    } 

News_detail.java

パブリッククラスNews_DetailがAppCompを拡張するすべての結果のアプリがクラッシュ... (私の悪い英語のため申し訳ありません)

Lastest_Fragment.javaをクリックしてくださいatActivity {

Intent intent = getIntent(); 
String name = intent.getStringExtra("name"); 

private static String Title="title"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.news_detail); 
    getSupportActionBar().hide(); 

    Intent i = getIntent(); 
    ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 
    String name = i.getStringExtra(Title); 
    String bitmap = i.getStringExtra("images"); 
    NetworkImageView thumbNail = (NetworkImageView) findViewById(R.id.thumbnail); 
    thumbNail.setImageUrl(bitmap, imageLoader); 
    TextView lblname = (TextView) findViewById(R.id.name_label); 

    lblname.setText(name); 
} 

public void onClickHandler(View v){ 
    switch(v.getId()){ 
     case R.id.thumbnail:startActivity(new Intent(this,LatestFragment.class)); 
    } 
} 
} 
+0

エラーログを送信してください。 –

+0

実際にはエラーログはありません.... –

答えて

0

問題があるので、キー "name" を持っていない活動を開始するためにあなたのcode.Yourの意向

Intent intent = getIntent(); String name = intent.getStringExtra("name");

ライン。

Intent intent = new Intent(getActivity(), News_Detail.class); 
      intent.putExtra(Title, name); 
      intent.putExtra("images", bitmap); 
+0

どうすればいいですか? –

+0

この行をコメントしてください "String name = intent.getStringExtra(" name ");"あなたのNews_deail.javaアクティビティで再試行してください。 –

+0

はこのコードを使用して正常に動作します:String names =((TextView)view.findViewById(R.id.title))。getText()。toString() ; intent.putExtra(タイトル、名前); –

関連する問題