我有一个活动,我在其中添加/删除片段。 当我单击活动中的另一个按钮时,我想更改当前片段中按钮的文本。 怎么做到这一点?
我正在向活动添加片段,如下所示:
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;
}
}
答案 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