私のアプリケーションを実行すると、別のフラグメントで置き換えるためにフラグメント化する必要があるまで、すべて正常に動作します。ユーザーがリストビュー上のアイテムの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();
'R.id.drawer_layout'を通じて呼び出すようにしてください...これはactivity_main2.xml''の一部であり、あなたは確かにいますか? –
@ cricket_007あり – nao
なぜあなたは 'onCreate'で' replace'を使用していますか?まだフラグメントがないので 'add'を使うべきではありませんか? –