Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用片段更改ActionBar标题 我正在使用Actionbar 我有一个片段调用Favorites,其中我将一些联系人保存为Favorites 当你点击一个联系人时,它会将我带到另一个片段,并将联系人号码放在编辑文本上 新的片段是呼叫转移_Android_Android Fragments_Android Actionbar - Fatal编程技术网

Android 使用片段更改ActionBar标题 我正在使用Actionbar 我有一个片段调用Favorites,其中我将一些联系人保存为Favorites 当你点击一个联系人时,它会将我带到另一个片段,并将联系人号码放在编辑文本上 新的片段是呼叫转移

Android 使用片段更改ActionBar标题 我正在使用Actionbar 我有一个片段调用Favorites,其中我将一些联系人保存为Favorites 当你点击一个联系人时,它会将我带到另一个片段,并将联系人号码放在编辑文本上 新的片段是呼叫转移,android,android-fragments,android-actionbar,Android,Android Fragments,Android Actionbar,因此,我的问题是,当用户单击联系人时,会将我带到另一个片段,但操作栏上的标题仍然是最喜欢的标题,而不是新标题,如何更改该标题 我已尝试在单击方法上使用setTitle,但仍不起作用。在您的活动中: public void setActionBarTitle(String title) { getSupportActionBar().setTitle(title); } 在片段中(您可以将其放在创建或恢复中): 在你的片段中 public View onCreateView(Layout

因此,我的问题是,当用户单击联系人时,会将我带到另一个片段,但操作栏上的标题仍然是最喜欢的标题,而不是新标题,如何更改该标题

我已尝试在单击方法上使用
setTitle
,但仍不起作用。

在您的活动中:

public void setActionBarTitle(String title) {
    getSupportActionBar().setTitle(title);
}
在片段中(您可以将其放在创建或恢复中):

在你的片段中

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    getActivity().setTitle("Team B");

    View rootView = inflater.inflate(R.layout.fragment_team_b, container, false);

    return rootView;
}

如果您使用的是Android Jetpack的导航组件。操作栏读取片段名称的Label属性。不确定这是否是正确的修复,但如果您在导航编辑器中更改标签文本,它将由托管片段的活动中设置的supportActionBar读取。

Em Kotlin vocêpode usar o seguinte código nas funções:onCreateView,onStart e onResume

override fun onStart() {
   super.onStart()

   (activity as? AppCompatActivity)?.supportActionBar?.title = "Título".
}
如果你喜欢的话,你可以把它放在一个片段中

import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment

fun Fragment.setTitle(title: String) {
    (activity as? AppCompatActivity)?.supportActionBar?.title = title
}
class StartFragment : Fragment() {

   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
   ): View? {
       return inflater.inflate(R.layout.fragment_start, container, false)
   }

   override fun onStart() {
       super.onStart()

       this.setTitle(getString(R.string.titulo))
   }
}
Chamada da função de extensão dentro do Fragment

import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment

fun Fragment.setTitle(title: String) {
    (activity as? AppCompatActivity)?.supportActionBar?.title = title
}
class StartFragment : Fragment() {

   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
   ): View? {
       return inflater.inflate(R.layout.fragment_start, container, false)
   }

   override fun onStart() {
       super.onStart()

       this.setTitle(getString(R.string.titulo))
   }
}

程序员的答案不是正确的,但是当你回到上一个活动或片段时,标题保持不变

这是我的解决方案

  • 重写片段中的OnPause()或OnStopMethod,您可以使用相同的方法“((MainFragmentActivity)getActivity()).setActionBarTitle(“您的标题”);”设置Backbackback中存在的活动或片段的标题
供java使用
更改工具栏标题的步骤

@Override
public View onCreateView(LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {

    ((MainActivity) getActivity()).getSupportActionBar().setTitle("hello word");

    View root = inflater.inflate(R.layout.fragment_home, container, false);
    return root;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

很好的示例我没有意识到onResume可以覆盖我的标题它更改得很好,但是它在更改后保存到所有片段如果我要更改片段,它应该更改,因为我在BottomNavigationViewEx上有片段,它不适用于更改片段查看此链接我们可以使用jetpack更改操作栏的字体吗?