Android - 何时从Fragment中调用Activity的方法

3
我有一个带有工具栏的Activity。当我切换到Fragment A时,需要专门为Fragment A更改工具栏。
Fragment A包含4个其他的Fragment作为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();

一些方式,图标没有改变,但标题和颜色已经改变了。我甚至在图标上设置了 setVisibility(View.VISIBLE); 方法。是否有特定的状态需要调用这种方法?或者我做错了吗?
更新
这是我的 changeIcon 方法。
public void changeIcon(Drawable imageDrawable){
    toolbarImage.setVisibility(View.GONE);
    toolbarIcon.setVisibility(View.VISIBLE);
    toolbarIcon.setImageDrawable(imageDrawable);
}

toolbarImage是位于工具栏中的ImageView

它看起来像这样:

<Toolbar>
    <RelativeLayout>
        <ImageView> //Toolbar Image
        <ImageView>// Toolbar Icon
    </RelativeLayout>
</Toolbar>

我正在onCreateView()方法中调用这些方法。


从[Activity]http://developer.android.com/reference/android/app/Activity.html中没有听说过这样的方法:changeIcon,changeBackground... 你确定你的代码没问题吗? - T D Nguyen
@TungD.Nguyen 这是因为这些方法是开发人员为自定义使用而创建的。在这种情况下,我就是那个创建它的人哈哈,有没有更好的解决方案可以从“Fragment”更改“Activity”的任何属性?@cricket,现在就去做。 - Kevin Murvie
嗨,这段代码片段没有提供足够的信息。toolbarImagetoolbarIcon不够清楚,我认为问题内容和标题也缺乏联系。:| - T D Nguyen
尝试从onCreateView方法中调用它。 - Bharatesh
嗨。即使你可以这样做,但这不是最好的方式。最好在你的片段中设置一个回调,让你的活动实现它并调用这样的方法。 - Smashing
显示剩余4条评论
2个回答

1
尝试一下。
public void changeIconToolbar(int resId){
    getSupportActionBar().setHomeAsUpIndicator(resId);
}

它对我有效


我正在使用 Drawable 来设置它,并且不想使用 .setHomeAsUpIndicator(),因为它会用于弹出返回堆栈。你提供的解决方案适用于那些没有使用 .setHomeAsUpIndicator() 的人,但是我需要它。 - Kevin Murvie

0

好的,现在我能看到您可能使用的是 Toolbar (而不是 ActionBar ),我再次假设 Toolbar 是API级别21中添加的工具栏,而不是AppCompat工具栏

为了使用这个 工具栏,我假设您已经调用了 setActionBar(toolbar) 用从您的布局中的工具栏替换操作栏。

注意:如果没有调用此 setActionBar(toolbar),则您的活动将继续使用默认的 ActionBar (在 onCreate()中)并且什么也不会显示

现在,当工具栏就位时。我认为您的代码将正常工作。

PS:我建议使用AppCompat工具栏


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接