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() ..

+0

从来没有听说过['Activity'] http://developer.android.com/reference/android/app/Activity.html这样的方法:changeIcon,changeBackground。 ..你确定你的代码? –

+0

使用片段的onAttach方法 –

+0

@ TungD.Nguyen这是因为这些方法是开发人员为自定义使用而创建的。在这种情况下,我是创建它的人之一,是否有更好的解决方案来更改'Activity上的任何属性'从'碎片'? @cricket,现在就做吧 –

试试吧。

public void changeIconToolbar(int resId){ 
    getSupportActionBar().setHomeAsUpIndicator(resId); 
} 

对我来说

+0

我使用'Drawable'来设置它,并且不想使用'.setHomeAsUpIndicator()',因为它用于弹出backstack ..您提供的这个解决方案对那些不使用'.setHomeAsUpIndicator ()',但我需要它.. –

好工作,现在我可以看到,你可能使用Toolbar(而不是ActionBar),并再次假设我Toolbar是在API级别21,而不是AppCompat Toolbar加入toolbar

为了使用这个toolbar,我假设你叫setActionBar (toolbar)用您的布局中的工具栏替换ActionBar

注意:如果不调用这个setActionBar (toolbar),你的活动将继续使用默认ActionBar(在onCreate())和什么将被显示。

现在,当工具栏在它的位置。我认为你的代码会起作用。

PS:我建议使用程序兼容性工具栏