2016-04-15 55 views
3

我有一個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,現在就做吧 –

回答

1

試試吧。

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

對我來說

+0

我使用'Drawable'來設置它,並且不想使用'.setHomeAsUpIndicator()',因爲它用於彈出backstack ..您提供的這個解決方案對那些不使用'.setHomeAsUpIndicator ()',但我需要它.. –

0

好工作,現在我可以看到,你可能使用Toolbar(而不是ActionBar),並再次假設我Toolbar是在API級別21,而不是AppCompat Toolbar加入toolbar

爲了使用這個toolbar,我假設你叫setActionBar (toolbar)用您的佈局中的工具欄替換ActionBar

注意:如果不調用這個setActionBar (toolbar),你的活動將繼續使用默認ActionBar(在onCreate())和什麼將被顯示。

現在,當工具欄在它的位置。我認爲你的代碼會起作用。

PS:我建議使用程序兼容性工具欄

相關問題