- 我正在使用Actionbar。
- 我有一个名为“收藏夹(Favorites)”的片段,我将一些联系人保存为收藏夹。
- 当您单击其中一个联系人时,它会带我到另一个片段,并在editText中放置该联系人的号码。
- 新片段称为“转账(Transfers)”。
所以我的问题是,当用户点击联系人时,它会将我带到另一个片段,但操作栏上的标题仍然是收藏夹的标题而不是新的标题,请问如何更改这个标题?
我已经尝试在单击方法中使用setTitle
,但仍然无法工作。
所以我的问题是,当用户点击联系人时,它会将我带到另一个片段,但操作栏上的标题仍然是收藏夹的标题而不是新的标题,请问如何更改这个标题?
我已经尝试在单击方法中使用setTitle
,但仍然无法工作。
在您的活动中:
public void setActionBarTitle(String title) {
getSupportActionBar().setTitle(title);
}
在你的片段中(可以将其放在onCreate或onResume中):
public void onResume(){
super.onResume();
// Set title bar
((MainFragmentActivity) getActivity())
.setActionBarTitle("Your 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;
}
在 Kotlin 中,您可以在 onCreateView、onStart 和 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))
}
}
用于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);
}
“NOT_A_PROGRAMMER”的回答是正确的,但是当您返回到之前的活动或片段时,标题仍然保持不变。
这是我的解决方案。
@Override
public void onStop() {
super.onStop();
((MPOSTransactionActivity) getActivity()).setActionBarTitle(getString(//NAME));
}