ViewPager+Fragment+broadcast でスライド ページ切り替えを実装_html/css_WEB-ITnose
このようなページを実装するには、上記は簡単に言うと以下のようになります。考えられるのは、viewpager を使用して実装することですが、問題があります。これは通常の書き方に従って、5 つのアクティビティを記述してビューページャーに配置することになります。しかし、ここで問題が発生します。開始すると、メイン インターフェイスの manager.startActivity(id,tent).getDecorView(); に移動してビューを取得し、それをビューページャーに追加します。これは、デフォルトでは最初のページのみを読み込み、2 番目のページにスライドした後にのみ 2 番目のページのデータの読み込みを開始するというものです。イベントの監視を通じて、最初に 5 つのアクティビティが作成され、すべてのメソッドが実行されていることがわかりました。再度スライドして切り替える場合、監視メソッドや実装メソッドは呼び出されません。
私は後で別の方法を考えました。viewpager+5 Fragments+broadcast メカニズムを使用して更新を通知します。
メインインターフェイスでは次のように書くことができます。
/** * 初始化PageViewer */ List<Fragment> list; FragmentPagerAdapter myPagerAdapter; FragmentManager SupportfragmentManager = getSupportFragmentManager(); private void initPagerViewer(){ Label1AllOrder lable1 = new Label1AllOrder(); Label2WinPrizeOrder lable2 = new Label2WinPrizeOrder(); Label3WaitForLotteryOrder lable3 = new Label3WaitForLotteryOrder(); Label4ZhuiHaoOrder lable4 = new Label4ZhuiHaoOrder(); Label5BuyTogetherOrder lable5 = new Label5BuyTogetherOrder(); list = new ArrayList<Fragment>(); list.add(lable1); list.add(lable2); list.add(lable3); list.add(lable4); list.add(lable5); myPagerAdapter = new MyPagerAdapter(SupportfragmentManager); view_pager.setAdapter(myPagerAdapter); view_pager.setOnPageChangeListener(new MyOnPageChangeListener()); } /** * Pager适配器 */ public class MyPagerAdapter extends FragmentPagerAdapter { public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int arg0) { return list.get(arg0); } @Override public int getCount() { return list.size(); } /*@Override public Object instantiateItem(View arg0, int arg1) { //ViewPager pViewPager = ((ViewPager) arg0); //pViewPager.addView(list.get(arg1).getView()); return list.get(arg1); } @Override public void destroyItem(ViewGroup container, int position, Object object) { //ViewPager pViewPager = ((ViewPager) container); //pViewPager.removeView(list.get(position).getView()); }*/ } private void sendBroadcastDoRefreshByCurrentIndex(){ switch (currentIndex) { case 0: sendBroadcastDoRefresh("action.Label1AllOrder"); break; case 1: sendBroadcastDoRefresh("action.Label2WinPrizeOrder"); break; case 2: sendBroadcastDoRefresh("action.Label3WaitForLotteryOrder"); break; case 3: sendBroadcastDoRefresh("action.Label4ZhuiHaoOrder"); break; case 4: sendBroadcastDoRefresh("action.Label5BuyTogetherOrder"); break; default: break; } } Intent broadCastIntent = new Intent(); // 广播通知 private void sendBroadcastDoRefresh(String action){ broadCastIntent.setAction(action); sendBroadcast(broadCastIntent); } /** * 页卡切换监听 */ private int currentIndex = 0; public class MyOnPageChangeListener implements OnPageChangeListener { @Override public void onPageSelected(int index) { currentIndex = index; System.out.println("-onPageSelected--------" + index); initViewPagePoint(index); switch (index) { case 0: sendBroadcastDoRefresh("action.Label1AllOrder"); view_pager_tip.setText("全部订单"); break; case 1: sendBroadcastDoRefresh("action.Label2WinPrizeOrder"); view_pager_tip.setText("中奖订单"); break; case 2: sendBroadcastDoRefresh("action.Label3WaitForLotteryOrder"); view_pager_tip.setText("待开奖订单"); break; case 3: sendBroadcastDoRefresh("action.Label4ZhuiHaoOrder"); view_pager_tip.setText("追号订单"); break; case 4: sendBroadcastDoRefresh("action.Label5BuyTogetherOrder"); view_pager_tip.setText("合买订单"); break; default: break; } } @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } }
スライドするたびに、サブインターフェースに更新を通知するブロードキャストが送信されます。しかし、更新されるたびに独自のコントロールがあるのでしょうか?
5 つのサブフラグメントでは、次のように書くことができます: 実際、ここにある 5 つは似ています。こんな感じでコード
public class Label2WinPrizeOrder extends Fragment implements OnClickListener { Activity activity = Label2WinPrizeOrder.this.getActivity(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater inflater = getActivity().getLayoutInflater(); mainView = inflater.inflate(R.layout.my_lottery_user_center_label2_win_prize, (ViewGroup)getActivity().findViewById(R.id.my_lottery_user_center_viewpage), false); initUI(); initNoDataUI(); //注册刷新广播 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("action.Label2WinPrizeOrder"); getActivity().registerReceiver(mRefreshBroadcastReceiver, intentFilter); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup p = (ViewGroup) mainView.getParent(); if(p!=null){ p.removeAllViewsInLayout(); } return mainView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } // broadcast receiver private BroadcastReceiver mRefreshBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals("action.Label2WinPrizeOrder")) { System.out.println("---------------action.Label2WinPrizeOrder"); if (AutoUpdate.isNetworkAvailable(activity)) { if(canLoadAgain){ loadingRelativelayout.setVisibility(View.VISIBLE); noDataLinearlayout.setVisibility(View.GONE); hasDataLinearlayout.setVisibility(View.GONE); updateInitLotteryInfo(); page = 0; mListView.mEndRootView.setVisibility(View.GONE); mListView.setAutoLoadMore(true); mListView.setCanRefresh(true); new getDataTask().execute(1); } } setK3ballVisible(); } } }; //初设化彩种信息 private void updateInitLotteryInfo(){ if(MyLotterActivity.labelsListData != null && MyLotterActivity.labelsListData.size() >= 2){ MyLotteryLabelBean bean = MyLotterActivity.labelsListData.get(1); if(FunctionUtil.strNotNull(bean.getLottery_type_index())){ if("308".equals(bean.getLottery_type_index())){ lottery_type_index = 308; }else if("309".equals(bean.getLottery_type_index())){ lottery_type_index = 309; }else if("310".equals(bean.getLottery_type_index())){ lottery_type_index = 310; } } if(FunctionUtil.strNotNull(bean.getTitle())){ title = bean.getTitle(); } tipTextview.setText(title); } } private void initUI() { activity = getActivity(); loadingRelativelayout = (LinearLayout) mainView.findViewById(R.id.my_lottery_user_center_label2_loading_rel); loadAgainRelativelayout = (RelativeLayout) mainView.findViewById(R.id.my_lottery_user_center_label2_load_again_rel); hasDataLinearlayout = (LinearLayout) mainView.findViewById(R.id.my_lottery_user_center_label2_has_data_linear); noDataLinearlayout = (LinearLayout) mainView.findViewById(R.id.my_lottery_user_center_label2_no_data_linear);
<span style="white-space:pre"> </span>}
を投稿します。スワイプするたびに、5 つのサブカテゴリでブロードキャスト通知を受け取ることができます。もう一度そのポイントにスライドしても、データを再度更新するかどうかは、制御方法によって異なります。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

Y軸位置Webアノテーション機能の適応アルゴリズムこの記事では、単語文書と同様の注釈関数、特に注釈間の間隔を扱う方法を実装する方法を探ります...

画像をクリックした後、散乱と周囲の画像を拡大する効果を実現するには、多くのWebデザインがインタラクティブな効果を実現する必要があります。特定の画像をクリックして周囲を作成してください...

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。
