2017-06-20 7 views

答えて

1

複数のフラグメントを使用することも、アクティビティ自体を複数回呼び出すこともできます... 私はあなたのようなアプリを使い、私は最初の方法を選びました!

これは私が書いたプロジェクトの断片であり、それを操作するアクティビティは、必要に応じて変更する必要があります。

活動

public class CollectActivity extends FragmentActivity { 

    MyPageAdapter pageAdapter; 
    NonSwipeableViewPager pager; 
    SpringIndicator springIndicator; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_collect); 
     List<Fragment> fragments = getFragments(); 
     pager = (NonSwipeableViewPager) findViewById(R.id.view_pager); 

     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     PagerModelManager manager = new PagerModelManager(); 
     manager.addCommonFragment(fragments, getTitles()); 


     ModelPagerAdapter adapter = new ModelPagerAdapter(getSupportFragmentManager(), manager); 
     pager.setAdapter(adapter); 
     springIndicator = (SpringIndicator) findViewById(R.id.indicator); 
     springIndicator.setViewPager(pager); 
     springIndicator.setOnTabClickListener(new TabClickListener() { 
      @Override 
      public boolean onTabClick(int position) { 
       return false; 
      } 
     }); 


    } 

    private List<Fragment> getFragments() { 
     List<Fragment> fList = new ArrayList<Fragment>(); 
     fList.add(CollectFragment.newInstance("Fragment 1")); 
     fList.add(CollectFragment.newInstance("Fragment 2")); 
     fList.add(CollectFragment.newInstance("Fragment 3")); 
     //add your fragments with a loop 

     return fList; 
    } 

    private List<String> getTitles() { 
     return Lists.newArrayList("1", "2", "3"); 
    } 


    public void swipeFragment() { 

     pager.setCurrentItem(pager.getCurrentItem() + 1); 

    } 

    public int getFragment() { 
     return pager.getCurrentItem(); 

    } 


} 

断片

public class CollectFragment extends Fragment { 
    private Button openButton; 
    private Button confirmationCloseButton; 
    private Button yesRenew; 
    private Button noRenew; 
    private BroadcastReceiver udpMessages; 

    public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE"; 


    public static final CollectFragment newInstance(String message) { 
     CollectFragment f = new CollectFragment(); 
     Bundle bdl = new Bundle(1); 
     bdl.putString(EXTRA_MESSAGE, message); 
     f.setArguments(bdl); 
     return f; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     String message = getArguments().getString(EXTRA_MESSAGE); 
     View v = null; 
     if (message.compareTo("Fragment 1") == 0) { 
      v = inflater.inflate(R.layout.fragment_collect_open, container, false); 
      openButton = (Button) v.findViewById(R.id.open_button); 
      openButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent i2 = new Intent(); 
        i2.setComponent(new ComponentName("qira.com.locker", "qira.com.locker.Service.MessageService")); 
        i2.putExtra("Message", "CONFIRM_LOCKER_1_CLOSED"); 
        getContext().startService(i2); 
       } 
      }); 
     } 
     if (message.compareTo("Fragment 2") == 0) { 
      v = inflater.inflate(R.layout.fragment_collect_close, container, false); 
      confirmationCloseButton = (Button) v.findViewById(R.id.confirmation_close_button); 
      confirmationCloseButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent i2 = new Intent(); 
        i2.setComponent(new ComponentName("qira.com.locker", "qira.com.locker.Service.MessageService")); 
        i2.putExtra("Message", "OPEN_LOCKER_1"); 
        getContext().startService(i2); 
       } 
      }); 
     } 
     if (message.compareTo("Fragment 3") == 0) { 
      v = inflater.inflate(R.layout.fragment_collect_renew, container, false); 
      yesRenew = (Button) v.findViewById(R.id.yes_button); 
      noRenew = (Button) v.findViewById(R.id.no_button); 


      yesRenew.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        ((CollectActivity) getActivity()).swipeFragment(); 
       } 
      }); 


      noRenew.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent i = new Intent(getContext(), ReserveActivity.class); 
        startActivity(i); 
       } 
      }); 
     } 

     return v; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     udpMessages = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       if (intent.getAction() != null && intent.getAction().equals("UDP.MESSAGES.COLLECT")) { 
        if (intent.getExtras().getString("Type").compareTo("OPEN_LOCKER_1-LOCKER_OPENED") == 0) { 
         if (((CollectActivity) getActivity()).getFragment() != 0) { // onCreateView called twice, dont know why... workaround to solve this problem 
          ((CollectActivity) getActivity()).swipeFragment(); 
         } 
        } 
        if (intent.getExtras().getString("Type").compareTo("CONFIRM_LOCKER_1_CLOSED-TRUE") == 0) { 
         if (((CollectActivity) getActivity()).getFragment() != 1) { // onCreateView called twice, dont know why... workaround to solve this problem 
          ((CollectActivity) getActivity()).swipeFragment(); 
         } 
        } 

       } 
      } 
     }; 

     getContext().registerReceiver(udpMessages, new IntentFilter("UDP.MESSAGES.COLLECT")); 

    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     getContext().unregisterReceiver(udpMessages); 
    } 

    @Override 
    public void onDestroyView() { 
     super.onDestroyView(); 

    } 


} 
+0

あなたは、私のための小さなデモコードを記入してくださいことはできますか?私はすべてを試してみたように、500のような複数のフラグメント(そのファイルのサイズは500kBに達します)にして、それを小さくしておきたいと思います... –

+0

あなたは500個のフラグメントを書きません。プログラム的に情報を設定する!私は会社のために書いたので、私はコードを投稿できません。 –

+0

デモコードを書くことができます:( –

関連する問題