Android - 何时从片段调用Activity的方法
我有一个Activity
其中有Toolbars
。当我移动到Fragment
A时,Toolbar
需要被专门为Fragment
A.Android - 何时从片段调用Activity的方法
Fragment
A含有其他4 Fragments
为A是一个FragmentPager
改变。
我打电话的Activity
类似方法:
((NewsfeedActivity)getActivity()).changeTitleBesideIcon("Purchases");
((NewsfeedActivity)getActivity()).changeIcon(getResources().getDrawable(R.drawable.purchase));
((NewsfeedActivity)getActivity()).changeBackground(getResources().getColor(R.color.purpleC));
((NewsfeedActivity)getActivity()).hideToolbarBottomMarketplace();
不知何故,图标不会得到改变,而title却,用色..我甚至设置方法setVisibility(View.VISIBLE);
上沿icon ..
是否有一种特定的状态需要调用这种方法?或者我只是做错了?
更新
这是我changeIcon
方法
public void changeIcon(Drawable imageDrawable){
toolbarImage.setVisibility(View.GONE);
toolbarIcon.setVisibility(View.VISIBLE);
toolbarIcon.setImageDrawable(imageDrawable);
}
toolbarImage是一个位于Toolbar
的ImageView
这是怎么回事:
<Toolbar>
<RelativeLayout>
<ImageView> //Toolbar Image
<ImageView>// Toolbar Icon
</RelativeLayout>
</Toolbar>
而且我调用中的方法onCreateView()
..
试试吧。
public void changeIconToolbar(int resId){
getSupportActionBar().setHomeAsUpIndicator(resId);
}
对我来说
我使用'Drawable'来设置它,并且不想使用'.setHomeAsUpIndicator()',因为它用于弹出backstack ..您提供的这个解决方案对那些不使用'.setHomeAsUpIndicator ()',但我需要它.. –
好工作,现在我可以看到,你可能使用Toolbar
(而不是ActionBar
),并再次假设我Toolbar
是在API级别21,而不是AppCompat Toolbar加入toolbar 。
为了使用这个toolbar
,我假设你叫setActionBar (toolbar)
用您的布局中的工具栏替换ActionBar
。
注意:如果不调用这个setActionBar (toolbar)
,你的活动将继续使用默认ActionBar
(在onCreate()
)和什么将被显示。
现在,当工具栏在它的位置。我认为你的代码会起作用。
PS:我建议使用程序兼容性工具栏
从来没有听说过['Activity'] http://developer.android.com/reference/android/app/Activity.html这样的方法:changeIcon,changeBackground。 ..你确定你的代码? –
使用片段的onAttach方法 –
@ TungD.Nguyen这是因为这些方法是开发人员为自定义使用而创建的。在这种情况下,我是创建它的人之一,是否有更好的解决方案来更改'Activity上的任何属性'从'碎片'? @cricket,现在就做吧 –