setHomeAsUpIndicator的Android片段示例
我正在尝试将为活动构建的Android示例改编为片段()。我想在片段中添加一个注释项并更改actionbar。我已经摸索了一段时间,我想我应该寻求帮助setHomeAsUpIndicator的Android片段示例,android,android-fragments,android-menu,Android,Android Fragments,Android Menu,我正在尝试将为活动构建的Android示例改编为片段()。我想在片段中添加一个注释项并更改actionbar。我已经摸索了一段时间,我想我应该寻求帮助 public class AddNoteActivity extends AppCompatActivity { ... @override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save
public class AddNoteActivity extends AppCompatActivity {
...
@override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_note);
...
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);
setTitle("Add Note");
}
}
我想把它放进一个片段,这是我得到的最接近的片段:
public class AddScenarioFragment extends Fragment {
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.add_note_menu, menu);
//change the title bar
ActionBar actionBar = getActivity().getActionBar();
actionBar.setHomeAsUpIndicator(R.drawable.ic_close);
actionBar.setTitle("Add Scenario");
super.onCreateOptionsMenu(menu, inflater);
}
}
但我得到了这个错误:
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.app.ActionBar.setHomeAsUpIndicator(int)”
有什么想法吗?只需将代码从
onCreateOptionsMenu()
转移到onCreateView()
方法
@Override
public View onCreateView(LayoutInflater inflater, ViewGroupparent, Bundle savedInstanceState) {
//change the title bar
ActionBar actionBar = getActivity().getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_close);
actionBar.setTitle("Add Scenario");
}
试试这个,让我给出反馈 这似乎奏效了:
//reset the menu at top
ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_close);
actionBar.setTitle("Add Scenario");
操作栏是androidx.appcompat.app.ActionBar
现在我需要弄清楚如何在清单中处理这个问题,使其正常工作。根据活动改编,我会有这样一句话:
<activity android:name=".AddNoteActivity" android:parentActivityName=".MainActivity"/>
“方法不重写其超类中的方法”我猜该方法不是Fragment类的一部分。您使用的是哪个片段?导入androidx.Fragment.app.Fragment;那它一定在那里,你在我的链接里找到了吗?