Android 使用viewpager更新片段以播放视频
我有一个RSS应用程序,我正在使用viewpager从一篇文章转到另一篇文章。 我的问题是,如果我打开列表中的一篇文章,我总是可以播放其中的视频。如果我在文章之间移动(使用滑动),我将无法播放视频 所以,我想我必须在刷卡时刷新片段?这就是解决方案吗 这是我的片段适配器:Android 使用viewpager更新片段以播放视频,android,android-viewpager,fragment,Android,Android Viewpager,Fragment,我有一个RSS应用程序,我正在使用viewpager从一篇文章转到另一篇文章。 我的问题是,如果我打开列表中的一篇文章,我总是可以播放其中的视频。如果我在文章之间移动(使用滑动),我将无法播放视频 所以,我想我必须在刷卡时刷新片段?这就是解决方案吗 这是我的片段适配器: public class DescAdapter extends FragmentStatePagerAdapter { public DescAdapter(FragmentManager fm) {
public class DescAdapter extends FragmentStatePagerAdapter {
public DescAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
entry = new HotOrNot_all(DetailActivity.this);
entry.open();
long count = entry.fetchPlacesCount();
entry.close();
return (int) count;
}
@Override
public Fragment getItem(int position) {
DetailFragment frag = new DetailFragment();
Bundle bundle = new Bundle();
bundle.putInt("pos", position);
frag.setArguments(bundle);
return frag;
}
}
DetailActivity.java
public class DetailActivity extends SherlockFragmentActivity {
int pos;
private DescAdapter adapter;
private ViewPager pager;
private ShareActionProvider mShareActionProvider;
private HotOrNot_all entry;
String TITLE;
String CAT;
String DESC;
String ROWID;
String IMAGE;
String DATE;
String LINK;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail);
Log.i(this.getComponentName().toString(), "Started");
pos = getIntent().getExtras().getInt("pos");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// Initialize the views
adapter = new DescAdapter(getSupportFragmentManager());
adapter.notifyDataSetChanged();
pager = (ViewPager) findViewById(R.id.pager);
// Set Adapter to pager:
pager.setAdapter(adapter);
pager.setCurrentItem(pos);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.
finish();
overridePendingTransition(R.anim.animation_slide_in_left,
R.anim.animation_slide_out_right);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
finish();
overridePendingTransition(R.anim.animation_slide_in_left,
R.anim.animation_slide_out_right);
return super.onKeyDown(keyCode, event);
}
public class DescAdapter extends FragmentStatePagerAdapter {
public DescAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
entry = new HotOrNot_all(DetailActivity.this);
entry.open();
long count = entry.fetchPlacesCount();
entry.close();
return (int) count;
}
@Override
public Fragment getItem(int position) {
DetailFragment frag = new DetailFragment();
Bundle bundle = new Bundle();
// bundle.putSerializable("list",TITLE_LIST);
bundle.putInt("pos", position);
frag.setArguments(bundle);
return frag;
}
}
}
DetailFragment.java
public class DetailFragment extends SherlockFragment {
private int fPos;
private ShareActionProvider mShareActionProvider;
String TITLE;
String CAT;
String DESC;
String ROWID;
String IMAGE;
String DATE;
String LINK;
private HotOrNot_all entry;
static Typeface roboto_bold;
static Typeface roboto_regular;
@SuppressWarnings("unchecked")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Bundle bundle = getActivity().getIntent().getExtras();
roboto_bold = Typeface.createFromAsset(getActivity().getAssets(),
"fonts/Roboto-Medium.ttf");
roboto_regular = Typeface.createFromAsset(getActivity().getAssets(),
"fonts/Roboto-Light.ttf");
Log.i(this.getActivity().toString(), "Started");
fPos = getArguments().getInt("pos");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.detail_fragment, container,
false);
setHasOptionsMenu(true);
entry = new HotOrNot_all(getActivity());
entry.open();
Cursor c = entry.getAllData();
if (c.moveToPosition(fPos)) {
TITLE = c.getString(c.getColumnIndexOrThrow(DBHelper.TITLE));
CAT = c.getString(c.getColumnIndexOrThrow(DBHelper.CATEGORY));
DESC = c.getString(c.getColumnIndexOrThrow(DBHelper.DESCRIPTION));
ROWID = c.getString(c.getColumnIndexOrThrow(DBHelper.ROWID));
IMAGE = c.getString(c.getColumnIndexOrThrow(DBHelper.IMAGE));
DATE = c.getString(c.getColumnIndexOrThrow(DBHelper.DATE));
LINK = c.getString(c.getColumnIndexOrThrow(DBHelper.LINK));
}
c.close();
entry.close();
// Initializr views
final TextView title = (TextView) view.findViewById(R.id.title);
title.setTypeface(roboto_bold);
final TextView date = (TextView) view.findViewById(R.id.date);
date.setTypeface(roboto_regular);
final TextView categg = (TextView) view.findViewById(R.id.categg);
categg.setTypeface(roboto_regular);
final WebView desc = (WebView) view.findViewById(R.id.desc);
desc.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// super.onPageFinished(view, url);
desc.loadUrl("javascript:(function() { "
+ "document.getElementsByTagName('img')[0].style.display = 'none'; "
+ "})()");
}
});
// Enable the vertical fading edge (by default it is disabled)
ScrollView sv = (ScrollView) view.findViewById(R.id.sv);
sv.setVerticalFadingEdgeEnabled(true);
// Set webview properties
WebSettings ws = desc.getSettings();
ws.setSupportZoom(true);
// ws.setDisplayZoomControls(true);
ws.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
ws.setLightTouchEnabled(false);
ws.setPluginState(PluginState.ON);
ws.setJavaScriptEnabled(true);
ws.setUserAgentString("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36");
// ws.setLoadsImagesAutomatically(false);
// desc.requestFocus(View.FOCUS_DOWN);
desc.loadDataWithBaseURL("", DESC,
"text/html", "UTF-8", null);
final WebView web = (WebView) view.findViewById(R.id.my_image);
web.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
// read string from reader
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
web.getSettings().setLightTouchEnabled(false);
web.getSettings().setPluginState(PluginState.ON);
web.getSettings()
.setUserAgentString(
"Mozilla/5.0 (Linux; U; Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");
web.setScrollbarFadingEnabled(true);
web.loadDataWithBaseURL(IMAGE,
"<img src=\" \" width=\"100%\" border=\"2\"/>", "text/html",
"utf-8", null);
// ----------------------------------------------------###############################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// Set the views
title.setText(TITLE);
final Button linkBtn = (Button) view.findViewById(R.id.linkBtn);
linkBtn.setBackgroundResource(R.color.white);
linkBtn.setTypeface(roboto_regular);
linkBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
web.setVisibility(View.GONE);
title.setVisibility(View.GONE);
date.setVisibility(View.GONE);
categg.setVisibility(View.GONE);
linkBtn.setVisibility(View.GONE);
desc.getSettings().setJavaScriptEnabled(true);
final ProgressDialog progressDialog = new ProgressDialog(view
.getContext());
progressDialog.setMessage("Loading website ...");
progressDialog.setCancelable(true);
progressDialog.show();
desc.loadUrl(LINK);
desc.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view,
String url) {
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl(url);
view.scrollTo(0, 0);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressDialog.dismiss();
}
});
// linkBtn.setVisibility(View.GONE);
}
});
return view;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.favorite_option2:
// app icon in action bar clicked; finish activity to go home
// grafei stin vasi dedomenwn
// ------------------------
HotOrNot_favorite entry = new HotOrNot_favorite(this.getActivity());
entry.open();
if (entry.Exists(LINK) == true) {
item.setIcon(R.drawable.favorite_empty_gr);
entry.deleteItemByLink(LINK);
} else {
item.setIcon(R.drawable.favorite_full_gr);
entry.createEntryNea(TITLE, DESC, LINK, DATE, IMAGE, CAT);
// entry.update(msg.getTitle(),msg.getagonistiki(),msg.getskor(),msg.getgipedo(),msg.getDate());
// ----------------------------------------
}
entry.close();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.activity_desc, menu);
MenuItem switchButton = menu.findItem(R.id.favorite_option2);
HotOrNot_favorite entry = new HotOrNot_favorite(this.getActivity());
entry.open();
if (entry.Exists(LINK) == true) {
switchButton.setIcon(R.drawable.favorite_full_gr);
}
entry.close();
// Locate MenuItem with ShareActionProvider
MenuItem shareItem = menu.findItem(R.id.share_option);
// Fetch and store ShareActionProvider
mShareActionProvider = (ShareActionProvider) shareItem
.getActionProvider();
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain"); // eixe text/plan
shareIntent.putExtra(Intent.EXTRA_SUBJECT, getText(R.string.app_name)
+ " Android App");
if ((LINK != null) && (TITLE != null)) {
String shareBody = Html.fromHtml(TITLE + "<br><br>")
+ LINK
+ Html.fromHtml("<br><br>Send from "
+ getText(R.string.app_name) + " Android App");
shareIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
// Set the share intent
mShareActionProvider.setShareIntent(shareIntent);
}
else {
String shareBody = LINK;
shareIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
// Set the share intent
mShareActionProvider.setShareIntent(shareIntent);
}
super.onCreateOptionsMenu(menu, inflater);
}
}
public类DetailFragment扩展了SherlockFragment{
私人int FPO;
私有ShareActionProvider mShareActionProvider;
字符串标题;
弦猫;
字符串描述;
字符串ROWID;
字符串图像;
字符串日期;
串链;
私人旅馆不允许进入;
静态字体roboto_粗体;
静态字体roboto_regular;
@抑制警告(“未选中”)
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//Bundle Bundle=getActivity().getIntent().getExtras();
roboto_bold=Typeface.createFromAsset(getActivity().getAssets(),
“fonts/Roboto Medium.ttf”);
roboto_regular=Typeface.createFromAsset(getActivity().getAssets(),
“字体/Roboto-Light.ttf”);
Log.i(this.getActivity().toString(),“Started”);
fPos=getArguments().getInt(“pos”);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
最终视图=充气机。充气(右布局。详图\u碎片,容器,
假);
设置选项菜单(真);
entry=newhotornot_all(getActivity());
entry.open();
游标c=entry.getAllData();
如果(c.移动位置(fPos)){
TITLE=c.getString(c.getColumnIndexOrThrow(DBHelper.TITLE));
CAT=c.getString(c.getColumnIndexOrThrow(DBHelper.CATEGORY));
DESC=c.getString(c.getColumnIndexOrThrow(DBHelper.DESCRIPTION));
ROWID=c.getString(c.getColumnIndexOrThrow(DBHelper.ROWID));
IMAGE=c.getString(c.getColumnIndexOrThrow(DBHelper.IMAGE));
DATE=c.getString(c.getColumnIndexOrThrow(DBHelper.DATE));
LINK=c.getString(c.getColumnIndexOrThrow(DBHelper.LINK));
}
c、 close();
entry.close();
//初始化视图
final TextView title=(TextView)view.findViewById(R.id.title);
标题.设置字体(roboto_粗体);
最终TextView日期=(TextView)view.findViewById(R.id.date);
日期。设置字体(roboto_常规);
final TextView categg=(TextView)view.findViewById(R.id.categg);
类别设置字体(roboto_常规);
final WebView desc=(WebView)view.findviewbyd(R.id.desc);
desc.setWebViewClient(新WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
//super.onPageFinished(视图、url);
desc.loadUrl(“javascript:(函数(){”
+“document.getElementsByTagName('img')[0]。style.display='none'
+ "})()");
}
});
//启用垂直淡入边缘(默认情况下禁用)
ScrollView sv=(ScrollView)view.findViewById(R.id.sv);
sv.setVerticalFadingEdgeEnabled(真);
//设置webview属性
WebSettings ws=desc.getSettings();
ws.setSupportZoom(真);
//ws.setDisplayZoomControl(true);
ws.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_列);
ws.setLightTouchEnabled(false);
ws.setPluginState(PluginState.ON);
ws.setJavaScriptEnabled(true);
ws.setUserAgentString(“Mozilla/5.0(X11;Linux x86_64)AppleWebKit/534.36(KHTML,类似Gecko)Chrome/13.0.766.0 Safari/534.36”);
//ws.setLoadsImagesAutomatically(false);
//描述请求焦点(视图焦点向下);
desc.loadDataWithBaseURL(“),desc,
“文本/html”、“UTF-8”、空);
final WebView web=(WebView)view.findviewbyd(R.id.my_image);
setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
返回true;
}
});
//从读卡器读取字符串
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_列);
web.getSettings().setLightTouchEnabled(false);
web.getSettings().setPluginState(PluginState.ON);
web.getSettings()
.setUserAgentString(
“Mozilla/5.0(Linux;U;Android 2.0;en-us;Droid Build/ESD20)AppleWebKit/530.17(KHTML,类似Gecko)版本/4.0 Mobile Safari/530.17”);
web.setScrollBarFadinEnabled(真);
loadDataWithBaseURL(图像,
“”和“text/html”,
“utf-8”,空);
// ----------------------------------------------------###############################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//设置视图
title.setText(title);
final Button linkBtn=(Button)view.findviewbyd(R.id.linkBtn);
linkBtn.setBackgroundResource(R.color.white);
linkBtn.setTypeface(roboto_常规);
linkBtn.setOnClickListener(新建按钮.OnClickListener(){
公共void onClick(视图v){
setVisibility(View.GONE);
title.setVisibility(View.GONE);
date.setVisibility(View.GONE);
类别设置可见性(视图已消失);
linkBtn.setVisibility(View.GONE);
desc.getSettings().setJavaScriptEnabled(true);
final ProgressDialog ProgressDialog=新建ProgressDialog(视图
.getContext());
progressDialog.setMessage(“加载网站…”);
progressDialog.setCancelable(真);