Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

accessing textview within a fragment in activity

I wanted to use Fragments with in the ActionBar. Unfortunately it looks like its really complicated. My Fragments have Textviews and I want to be able to communicate with them out of my activity. Before I started to use Fragments I could access them with

private EditText editText = (EditText) findViewById(R.id.editTextName);

So I was able to receive the editText value when a user clicked on save. How should I do this the Fragment-way?

Activity:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_recipe);
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    getSupportActionBar().setDisplayOptions(0, com.actionbarsherlock.app.ActionBar.DISPLAY_SHOW_HOME | com.actionbarsherlock.app.ActionBar.DISPLAY_USE_LOGO | com.actionbarsherlock.app.ActionBar.DISPLAY_SHOW_TITLE);

    ActionBar.Tab newTab0 = getSupportActionBar()
            .newTab()
            .setText(R.string.fragment_general)
            .setTabListener(
            new MyTabListener<GeneralFragment>(this, "general",
                            GeneralFragment.class));


    getSupportActionBar().addTab(newTab0);

}
public static class MyTabListener<T extends Fragment> implements
        TabListener {
    private Fragment mFragment;
    private final Activity mActivity;
    private final String mTag;
    private final Class<T> mClass;

    /**
     * * Constructor used each time a new tab is created. * * @param
     * activity * The host Activity, used to instantiate the fragment * @param
     * tag * The identifier tag for the fragment * @param clz * The
     * fragment's Class, used to instantiate the fragment
     */

    public MyTabListener(Activity activity, String tag, Class<T> clz) {
        mActivity = activity;
        mTag = tag;
        mClass = clz;
    }

    /* The following are each of the ActionBar.TabListener callbacks */

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // Check if the fragment is already initialized
        if (mFragment == null) {
            // If not, instantiate and add it to the activity
            mFragment = Fragment.instantiate(mActivity, mClass.getName());
            ft.add(android.R.id.content, mFragment, mTag);
        } else {
            // If it exists, simply attach it in order to show it
            //ft.setCustomAnimations(android.R.animator.fade_in, R.animator.animationtest);
            ft.attach(mFragment);
        }
    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        if (mFragment != null) {
            //ft.setCustomAnimations(android.R.animator.fade_in, R.animator.test);
            ft.detach(mFragment);
        }
    }

    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }
}
like image 321
float Avatar asked Oct 09 '12 17:10

float


People also ask

How can I access TextView activity?

Following is another way to set the text of textview control programmatically in activity file using setText() method. TextView tv = (TextView)findViewById(R. id. textView1);

Can we navigate from activity to fragment?

If you want to go back from Activity to Fragment. This is very simple just override onBackPressed() in your activity and call onBackPressed where you want.


1 Answers

You should call getView() on the Fragment and then use findViewById() on the view returned.

Of course, it won't return anything until after the view has been created, so you may have to call it somewhere besides onCreate.

like image 81
toadzky Avatar answered Sep 24 '22 00:09

toadzky