작성
·
22
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
다른분들 질문이랑 같아요.,..
저는 실행했을 때 상단 바가 보이지도 않아요
MainActivity.java
public class MainActivity extends AppCompatActivity {
ActivityMainBinding activityMainBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(activityMainBinding.getRoot());
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
//옵션 메뉴를 구성하는 메서드
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//xml 파일로부터 메뉴를 생성하는 객체
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.main_menu, menu); //res/menu/main_menu.xml 파일을 메뉴로 사용
return true;
}
//사용자가 메뉴를 선택 했을 때 호출되는 메서드
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
//사용자가 터치한 메뉴의 객체가 item으로 들어옴
//item에서 아이디 추출
int id = item.getItemId();
switch (id) {
case R.id.menu_item1:
activityMainBinding.textView.setText("메뉴항목 1을 선택했습니다");
break;
case R.id.menu_item3:
activityMainBinding.textView.setText("메뉴항목 3을 선택했습니다");
break;
case R.id.sub_item1:
activityMainBinding.textView.setText("하위 메뉴 1을 선택했습니다");
break;
case R.id.sub_item2:
activityMainBinding.textView.setText("하위 메뉴 2를 선택했습니다");
break;
}
return super.onOptionsItemSelected(item);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>
main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_item1"
android:title="메뉴항목1" />
<item
android:id="@+id/menu_item2"
android:title="메뉴 항목2" >
<menu >
<item
android:id="@+id/sub_item1"
android:title="하위 메뉴1" />
<item
android:id="@+id/sub_item2"
android:title="하위메뉴2" />
</menu>
</item>
<item
android:id="@+id/menu_item3"
android:title="메뉴 항목3" />
</menu>
대체 어디가 잘못된걸까요...
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. sotech_edu_027님.
상단 바(액션바)가 보이지 않는 문제는 여러 원인으로 발생할 수 있습니다. 아래 몇 가지 확인사항을 안내드리겠습니다.
잘못된 테마 설정 확인: 액션바가 없는 테마가 설정되어 있을 수 있습니다. styles.xml
파일을 확인해보세요. Theme.AppCompat
계열의 테마가 설정되어 있어야 합니다. 예를 들면:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryDark">@color/primaryDarkColor</item>
<item name="colorAccent">@color/accentColor</item>
</style>
Activity에 잘못된 테마 적용 확인: AndroidManifest.xml
파일에서 MainActivity
에 할당된 테마가 액션바가 포함된 적절한 테마인지 확인해 보세요.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme">
...
</activity>
메서드 내 요소 확인: onCreate
메서드 내에서 EdgeToEdge.enable(this);
를 사용하고 계시는데, 이 메서드가 시스템 UI 요소를 걸러서 표시할 수 있으니 관련 문서를 확인하여 적절히 설정되었는지 확인하세요.
아예 표시되지 않을 때: 레이아웃 파일을 제대로 inflate하지 않았거나, view의 ID가 일치되지 않아서 발생할 수 있습니다. 특히 main_menu.xml 파일이 제대로 inflate되지 않는 경우 방법이 제대로 실행되지 않을 수 있습니다.
다음과 관련된 내용들을 종합하여, 아래 링크의 답변도 참고하시면 도움이 될 것입니다:
onCreateOptionsMenu
설정에 있어 여러 사용자들이 겪는 문제와 그 해결 방법에 대해 다루고 있습니다.위 방법들이 실패할 경우, 추가로 발생한 오류 메시지를 공유해 주시면 더 정확한 답변도 가능합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.