[android-developers] Re: Removing a Fragment from FragmentPagerAdapter
Sorry its actually the Navigation Type: Swipe Views + Title Strip type
On Saturday, November 2, 2013 5:45:08 PM UTC+2, Boozel wrote:
-- On Saturday, November 2, 2013 5:45:08 PM UTC+2, Boozel wrote:
HiI have created an Activity from the template of a Blank Activity (http://developer.android.com/tools/projects/templates.html# ) with Navigation Type: Tabs or Tabs + Swipeblank-activity My code is below. I cannot find a way to remove a fragment. I can delete a tab from the pager at the Top but the fragment below is not removed. Please can you tell me what I am doing wrong? Any help would be appreciated.Thanks in advance.import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;public class MainActivity extends FragmentActivity {private static final String TAG = "Tag";SectionsPagerAdapter mSectionsPagerAdapter;Context context;ArrayList<String> titles;ArrayList<Fragment> frags;/*** The {@link ViewPager} that will host the section contents.*/ViewPager mViewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); context = getApplicationContext();//========================titles = new ArrayList<String>();frags = new ArrayList<Fragment>();titles.add("One");titles.add("Two");titles.add("Three");titles.add("Four");createFrags();//=========================setContentView(R.layout.activity_main); // Create the adapter that will return a fragment for each of the three// primary sections of the app.mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); // Set up the ViewPager with the sections adapter.mViewPager = (ViewPager) findViewById(R.id.pager);mViewPager.setAdapter(mSectionsPagerAdapter); }public void createFrags(){for (int i = 0; i < titles.size(); i++){Fragment fragment = genFrag(i+"");frags.add(fragment);}}public Fragment genFrag(String i){Fragment fragment = new DummySectionFragment();Bundle args = new Bundle();args.putString(DummySectionFragment.ARG_ SECTION_NUMBER, i); fragment.setArguments(args);return fragment;}@Overridepublic void onDestroy(){super.onDestroy();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu); return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {Log.d(TAG,"onOptionsItemSelected"); // Handle item selectionswitch (item.getItemId()) {case R.id.action_settings:Log.d(TAG,"Settings menu item pressed");Toast.makeText(this,"Settings",Toast.LENGTH_LONG); Intent i = new Intent(getApplicationContext(), SettingsActivity.class); startActivity(i);return true;case R.id.action_sendmsg:Log.d(TAG,"Send Message Option Pressed");// Start the service, keeping the device awake while it is launching.Intent intent = new Intent(this, SendMsgIntentService.class);startService(intent);Log.d(TAG,"Service Should be started?");return true;case R.id.action_add:Log.d(TAG,"Add menu item pressed");addTab("New");return true;case R.id.action_delete:Log.d(TAG,"delete menu item pressed");int a = mViewPager.getCurrentItem();removeTab(a);return true;default:return super.onOptionsItemSelected(item); }}public void addTab(String name){Log.i(TAG,"Add Tab");titles.add("New");Fragment f = genFrag(name);frags.add(f);mSectionsPagerAdapter.notifyDataSetChanged(); /*int position = mSectionsPagerAdapter.getCount()+1; Fragment fragment = new DummySectionFragment();Bundle args = new Bundle();args.putInt(DummySectionFragment.ARG_ SECTION_NUMBER, position); fragment.setArguments(args);mSectionsPagerAdapter.instantiateItem(mViewPager, position); mSectionsPagerAdapter.notifyAll(); */}public void removeTab(int position){Log.i(TAG,"Remove Tab");if(titles.size()==1){Toast.makeText(context, "You need to have at least one page.",Toast.LENGTH_LONG).show(); }else{titles.remove(position);frags.remove(position);mSectionsPagerAdapter.notifyDataSetChanged(); }/*mSectionsPagerAdapter.destroyItem(mViewPager, position, mSectionsPagerAdapter.getItem( position)); mSectionsPagerAdapter.notifyDataSetChanged(); */}/*** A {@link FragmentPagerAdapter} that returns a fragment corresponding to* one of the sections/tabs/pages.*/public class SectionsPagerAdapter extends FragmentPagerAdapter {public SectionsPagerAdapter(FragmentManager fm) { super(fm);}@Overridepublic Fragment getItem(int position) {// getItem is called to instantiate the fragment for the given page.// Return a DummySectionFragment (defined as a static inner class// below) with the page number as its lone argument.return frags.get(position);}@Overridepublic int getCount() {// Show 3 total pages.return frags.size();}@Overridepublic CharSequence getPageTitle(int position) {return titles.get(position);}}/*** A dummy fragment representing a section of the app, but that simply* displays dummy text.*/public static class DummySectionFragment extends Fragment {/*** The fragment argument representing the section number for this* fragment.*/public static final String ARG_SECTION_NUMBER = "section_number";public DummySectionFragment() {}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false); TextView dummyTextView = (TextView) rootView.findViewById(R.id.section_label); dummyTextView.setText(getArguments().getString(ARG_ SECTION_NUMBER)); return rootView;}}}
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home