J'ai créé une application webview avec listview fragmenté. J'ai suivi ce lien: Opening multiple local html files using webView via ListView Lorsque je clique sur l'élément, il doit me rediriger vers les détails de l'élément de webview. Maintenant j'essaye de l'implémenter dans le fragment Mais un seul article est réussi tandis que les autres articles ne me pointent pas au détail de webview qui devrait être. Je cherchais une solution mais toujours pas de chance. Voici mon codePlusieurs fichiers html fragmentés en utilisant webView via ListView
MainActivity:
package com.listviewfragment.withsublist;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Main_listFragment main_listFragment = new Main_listFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content, main_listFragment);
fragmentTransaction.commit();
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
tools:context="com.listviewfragment.withsublist.MainActivity">
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
</android.support.constraint.ConstraintLayout>
Main_listFragment.java
package com.listviewfragment.withsublist;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
/**
* A simple {@link Fragment} subclass.
*/
public class Main_listFragment extends Fragment {
ListView listView;
public Main_listFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_list, container, false);
// Inflate the layout for this fragment
listView = (ListView) rootView.findViewById(R.id.list);
String[] values = new String[] {
"Detail Webview 1",
"Detail Webview 2",
"Detail Webview 3",
};
ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, values);
// Assign adapter to ListView
listView.setAdapter(adapter);
// ListView Item Click Listener
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
// ListView Clicked item value
listView.getItemAtPosition(position);
if (position == 0) {
Detail_webview_mainFragment dlm = new Detail_webview_mainFragment();
getFragmentManager().beginTransaction().replace(R.id.content, dlm).addToBackStack(null).commit();
}
else if (position == 1) {
Detail_webview_mainFragment dlm = new Detail_webview_mainFragment();
getFragmentManager().beginTransaction().replace(R.id.content, dlm).addToBackStack(null).commit();
}
else if (position == 2) {
Detail_webview_mainFragment dlm = new Detail_webview_mainFragment();;
getFragmentManager().beginTransaction().replace(R.id.content, dlm).addToBackStack(null).commit();
}
}
});
return rootView;
}
}
fragment_main_list.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.listviewfragment.withsublist.Main_listFragment">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</FrameLayout>
Detail_webview_mainFragment.java
package com.listviewfragment.withsublist;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
/**
* A simple {@link Fragment} subclass.
*/
public class Detail_webview_mainFragment extends Fragment {
WebView view;
public Detail_webview_mainFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//getArguments().getString("key");
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_detail_webview_main, container, false);
view = (WebView) rootView.findViewById(R.id.webview);
// Enable Javascript
WebSettings webSettings = view.getSettings();
webSettings.setJavaScriptEnabled(true);
view.setWebViewClient(new WebViewClient());
int pos = getActivity().getIntent().getIntExtra("key", 0);
if (pos == 0) {
view.loadUrl("file:///android_asset/html/webview1.html");
} else if (pos == 1) {
view.loadUrl("file:///android_asset/html/webview2.html");
} else if (pos == 2) {
view.loadUrl("file:///android_asset/html/webview3.html");
}
return rootView;
}
}
fragment_detail_webview_main
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.listviewfragment.withsublist.Detail_webview_mainFragment">
<!-- TODO: Update blank fragment layout -->
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>
</FrameLayout>
Pourquoi voulez-vous utiliser au lieu fragment d'activité? En utilisant Detail_webview_mainFragment pour remplacer votre mise en page MainActivity, cela signifie que le Fragment de liste disparaîtra également. – Inducesmile