当我单击Activity上的按钮时,如何更改当前片段中按钮的文本?

时间:2015-08-23 09:37:54

标签: android android-fragments android-activity

我有一个活动,我在其中添加/删除片段。 当我单击活动中的另一个按钮时,我想更改当前片段中按钮的文本。 怎么做到这一点?

我正在向活动添加片段,如下所示:

private void navigateToPostAd() {
    // update the main content by replacing fragments


    Fragment fragment = null;
    fragment = new PostAdA();


    if (fragment != null) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).addToBackStack("post_ad").commit();


    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
}

在主要活动中,我正在做以下

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // toggle nav drawer on selecting action bar app icon/title
    if (mDrawerToggle.onOptionsItemSelected(item)) {

        location = (String)loadFromSharedPrefs("location");


       PostAdA fragment = new PostAdA();
        if(fragment.getBtnSelectCity() != null) {
            fragment.getBtnSelectCity().setText(location);
        }

        return true;
    }
}

1 个答案:

答案 0 :(得分:2)

如果您将FrameLayout替换为Fragment,则可以将片段声明为局部变量。

MyFragment fragment = new MyFragment();
你的MyFragment上有一个按钮的吸气器

public Button getButton() {
    return mButton;
}

当您的“活动”按钮中有onClick时,只需拨打fragment.getButton()setText()

如果您使用的是ViewPager,请致电PagerAdapter的{​​{1}}并执行相同的操作。看起来像这样:

getItem(int position)

无论哪种方式,您都需要((MyFragment) mAdapter.getItem(mViewPager.getCurrentItem())).getButton().setText("Your Text"); 的吸气剂和访问Button的方法。

编辑:您的问题是您正在创建Fragment的新实例在PostAdA对象的初始声明中,将其设为fragment,即

class variable