WebViews
은 언제든지 표시/숨길 수 있어야하는 HashMap
에 저장되어 있습니다.Android에서 WebViews 표시/숨기기
ListView
의 행을 탭하면 그 행과 연관된 WebView
을 표시하고 다른 모든 행은 숨겨야합니다. 다른 내용물을 언로드하지 않으려면 다른 WebViews
을 파괴 할 수 없습니다.
이것이 가능합니까? 하나의 Fragment
생성 및 저장 WebView
: 다른 Fragment
에
public WebView createWebView(Long id) {
WebView wv = new WebView(getActivity());
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:(registerCredentialsChangedCallback(function(credentials) {if (credentials.length >= 1) {window.location.href = 'callback:' + credentials;} else {alert('Error: callback set by registerCredentialsChangedCallback was given null string');}}))()");
}
});
WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
wv.loadUrl(makeViewerURL(id));
webViews.put(id, wv);
return wv;
}
onCreate
. 나는 WebView
표시해야 Fragment
에 Activity
를 통해 ID를 전달하는 interface
을 사용하고 있습니다 :
<?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:orientation="vertical"
android:background="#FFFFFF" >
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</RelativeLayout>
감사 : 웹보기를보기의
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_directory, container, false);
ListView listView = (ListView) rootView.findViewById(R.id.list);
DatabaseHelper dbHelper = new DatabaseHelper(getActivity());
android.R.layout.simple_list_item_1, android.R.id.text1, values);
final SimpleCursorAdapter adapter = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_list_item_1, dbHelper.getViewers(), new String[] { "description", "_id" }, new int[] { android.R.id.text1 }, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Long id = adapter.getItemId(i);
mCallback.onViewerSelected(id);
}
});
return rootView;
}
XML 레이아웃을 포함해야한다!
감사합니다. 제가해야 할 일은 웹 뷰를 생성 할 때 WebView의 높이와 너비를 설정하는 것입니다. WebView 생성자에서이 작업을 수행해야합니까? –
'Map'과'ListView'는 서로 다른 클래스에 있으므로 꽤 잘 작동하지 않을 것입니다. 이드를'액티비티 '에서'인터페이스'를 통해 다른'프래그먼트 '로 넘겨 주겠다. 그러면 다른'프래그먼트'클래스에서 이것을 사용하여 찾을 수있다. –
WebView를 FrameLayout 또는 다른 곳에 연결할 수있는 xml 레이아웃이 없다면 뷰를 만들 때 설정해야한다고 생각합니다. – Ali