2017-04-11 10 views
0

私のアプリケーションを実行すると、別のフラグメントで置き換えるためにフラグメント化する必要があるまで、すべて正常に動作します。ユーザーがリストビュー上のアイテムの1つをクリックすると、新しいレイアウト(新しいフラグメント)が開きます。私はアイテムAndroid - レイアウトは現在のフラグメントに残ります

これは私のonCreateメソッド

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 


     JsonArrayRequest tournamentReq = new JsonArrayRequest(url, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d(TAG, response.toString()); 

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

           JSONObject obj = response.getJSONObject(i); 
           Tournament tournament = new Tournament(); 
           tournament.setTitle(obj.getString("title")); 
           tournament.setThumbnailUrl(obj.getString("image")); 
           tournament.setDate(((Number) obj.get("tdate")) 
             .doubleValue()); 
           // Genre is json array 
           JSONArray categoryArry = obj.getJSONArray("category"); 
           ArrayList<String> category = new ArrayList<String>(); 
           for (int j = 0; j < categoryArry.length(); j++) { 
            category.add((String) categoryArry.get(j)); 
           } 
           tournament.setCategory(category); 

           // adding tournament to tournament array 
           TournamentList.add(tournament); 

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

         } 
         adapter.notifyDataSetChanged(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
      } 
     }); 

    AppController.getInstance().addToRequestQueue(tournamentReq); 
     } 

あるをクリックしたとき、しかし、今のところ、何も起こらなかったこれは私のonCreateViewと

TournamentFragment

 public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_tournament, container, false); 
     listView = (ListView) rootView.findViewById(android.R.id.list); 

     if (rootView.findViewById(R.id.frag_tour) != null){ 

     if (savedInstanceState != null) { 
      // Create an Instance of Fragment 
      TournamentFragment tFragment = new TournamentFragment(); 
      tFragment.setArguments(getActivity().getIntent().getExtras()); 
      getFragmentManager().beginTransaction() 
        .add(R.id.frag_tour, tFragment) 
        .commit(); 
     }}return rootView; 
} 

    public void OnSelectionChanged(int versionNameIndex) { 

    DescriptionFragment descriptionFragment = new DescriptionFragment(); 
    descriptionFragment.setArguments(getActivity().getIntent().getExtras()); 

    if (descriptionFragment != null){ 
     descriptionFragment.setDescription(versionNameIndex); 
    } else { 
     TournamentFragment tFragment = new TournamentFragment(); 

     fragmentTransaction.replace(R.id.fragment_container, tFragment); 
     fragmentTransaction.commit(); 
    } 
} 
でOnSelectionChanged方法であり、

fragment_description.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/fragment_container"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:text="This is where each individual description will appear" 
    android:id="@+id/version_description" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginLeft="@dimen/activity_horizontal_margin" 
    android:layout_marginRight="@dimen/activity_horizontal_margin" 
    android:gravity="center"/> 

</RelativeLayout> 

これまでのところ、私は解決策の異なる種類を試してみましたがstackoverflowの中で、ここで答えたが、それでも私の問題を解決することはできません。 誰かが私の理解を助けることができますか?コード

getSupportFragmentManager() 
       .beginTransaction() 
       .detach(contentFragment) // detach the current fragment 
       .attach(contentFragment) // attach fragment that you want. 
       .commit(); 
+0

'R.id.drawer_layout'を通じて呼び出すようにしてください...これはactivity_main2.xml''の一部であり、あなたは確かにいますか? –

+0

@ cricket_007あり – nao

+0

なぜあなたは 'onCreate'で' replace'を使用していますか?まだフラグメントがないので 'add'を使うべきではありませんか? –

答えて

0

使用は

getActivity().getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.fragment_container, tFragment) 
      .fragmentTransaction 
      .commit(); 
+0

私はしたいフラグメントクラス内でonCreateしていますか置き換えますか? – nao

+0

@nao 'getSupportFragmentManager()'は 'FragmentActivity'サブクラスからのみ呼び出すことができますが、フラグメント –

+0

で編集した新しい投稿をチェックアウトできません。 – nao

関連する問題