使用片段更改ActionBar标题

时间:2015-02-08 02:14:13

标签: android android-fragments android-actionbar

  • 我正在使用Actionbar。
  • 我有一个片段调用收藏夹,我将一些联系人保存为收藏夹。
  • 当您点击一个联系人时,它会将我带到另一个片段,并将联系号码放在editText上。
  • 新片段叫做转移。

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

我已经尝试在点击方法上使用setTitle,但仍无效。

6 个答案:

答案 0 :(得分:55)

在您的活动中:

public void setActionBarTitle(String title) {
    getSupportActionBar().setTitle(title);
}

在你的片段中(你可以将它放在onCreate或onResume上):

 public void onResume(){
        super.onResume();

    // Set title bar
    ((MainFragmentActivity) getActivity())
            .setActionBarTitle("Your title");

}

答案 1 :(得分:20)

在你的片段中

        cmddb.CommandText = "SELECT cover FROM movies Where nr = '" + x + "'";
        //dbreader.Read(); // is it wrong, maybe?
        while (dbreader.Read())

答案 2 :(得分:2)

Em Kotlin说,使用onCreateView,onStart和onResume。

Storage.get("TestJson.json", { download: true, customPrefix: customPrefix })
.then(result => console.log(JSON.parse(result.Body.toString())))
.catch(err => console.log(err));

片段片段的可喜替代品。

override fun onStart() {
   super.onStart()

   (activity as? AppCompatActivity)?.supportActionBar?.title = "Título".
}

Chamada dafunçãodeextensãodentro do Fragment

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

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

答案 3 :(得分:0)

如果您正在使用Android Jetpack的导航组件。操作栏读取片段名称的Label属性。不知道这是否是正确的解决方法,但是如果您在“导航编辑器”中更改“标签”文本,将由托管片段的“活动”中设置的supportActionBar读取该文本。Navigation Editor Attributes Tab

答案 4 :(得分:0)

NOT_A_PROGRAMMER的答案是正确的,但是当您返回上一个活动或片段时,标题保持不变。

这是我的解决方案。

  • 在片段中覆盖OnPause()或OnStopMethod,您可以使用相同的方法“(((MainFragmentActivity)getActivity())。setActionBarTitle(“ Your title”);“设置存在的Activity或Fragment的标题在后堆栈中。
    @Override
    public void onStop() {
        super.onStop();
        ((MPOSTransactionActivity) getActivity()).setActionBarTitle(getString(//NAME));
    }

答案 5 :(得分:0)

供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);
}