나는 표시하기 위해 노력하고있어 Back button
온을 Action bar
이전 페이지 / 활동을 이동하거나 메인 페이지로 (제 1 개구) 할 수 있습니다. 그리고 나는 그것을 할 수 없습니다.
내 코드.
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
코드는입니다 onCreate
.
나는 표시하기 위해 노력하고있어 Back button
온을 Action bar
이전 페이지 / 활동을 이동하거나 메인 페이지로 (제 1 개구) 할 수 있습니다. 그리고 나는 그것을 할 수 없습니다.
내 코드.
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
코드는입니다 onCreate
.
답변:
음 이것은 뒤로 버튼을 표시하는 간단한 것입니다.
actionBar.setDisplayHomeAsUpEnabled(true);
그런 다음 onOptionsItemSelected에서 back 이벤트를 사용자 정의 할 수 있습니다
case android.R.id.home:
this.finish();
return true;
onSupportNavigateUp()
가장 최선의 방법 이라고 생각 합니다. 아래 단계를 확인하십시오. 1 단계는 필수이며 2 단계는 대안이 있습니다.
1 단계 뒤로 버튼 표시 : 뒤로 버튼onCreate()
을 표시하는 방법 으로이 줄을 추가하십시오 .
assert getSupportActionBar() != null; //null check
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //show back button
백 클릭의 2 단계 구현 : 이 메소드 재정의
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
그것을 먹으 렴 당신은 완료
또는 2 단계 대안 : 당신은 매니페스트 파일의 활동 메타를 추가 할 수 있습니다
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="MainActivity" />
편집 : 당신이 사용하지 않는 경우 AppCompat
사용하지 않는 다음 활동을 support
단어를, 당신은 사용할 수 있습니다
getActionBar().setDisplayHomeAsUpEnabled(true); // In `OnCreate();`
// And override this method
@Override
public boolean onNavigateUp(){
finish();
return true;
}
의견을 보내 주신 @atariguy에게 감사드립니다.
onOptionsItemSelected
솔루션을 시도 했지만 실패했습니다.
getActionBar().setDisplayHomeAsUpEnabled(true);
@Override public boolean onNavigateUp(){ finish(); return true; }
마법은에서 발생합니다 onOptionsItemSelected
.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
getActionBar().setDisplayHomeAsUpEnabled(true);
show back 버튼을 위해 onCreateMethod를 먼저 추가해야 합니다.
this.onBackPressed();
사용자가 뒤로 버튼을 클릭 할 때 방법을 사용 하십시오.
공식 솔루션
이 두 코드 스 니펫을 SubActivity에 추가하십시오.
@Override
public void onCreate(Bundle savedInstanceState) {
...
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
메타 데이터 및 parentActivity를 추가하여 더 낮은 SDK를 지원하도록 나타냅니다.
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.SubActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
여기를 참조하십시오 : http://developer.android.com/training/implementing-navigation/ancestral.html
이 줄을 onCreate ()에 추가하십시오.
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
그리고 onOptionItemSelected에서
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
//Write your logic here
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
희망이 당신을 도울 것입니다 ..!
이 코드를 사용해보십시오. 뒤로 버튼이 필요한 경우에만 고려하십시오.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//YOUR CODE
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//YOUR CODE
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return true;
}
온 onCreate
방법 추가 :
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
AndroidManifest.xml
상위 활동 (작업 표시 줄의 뒤로 단추를 누르면 호출되는 활동) 에서 정의하는 동안 :
당신에 <activity>
매니페스트에 정의 라인을 추가합니다 :
android:parentActivityName="com.example.activities.MyParentActivity"
조금 늦었다는 것을 알고 있지만 문서를 따르면이 문제를 해결할 수있었습니다. 직접 .
메타 데이터 태그를 추가하여 AndroidManifest.xml
(시스템에서 알 수 있도록)
<activity
android:name=".Sub"
android:label="Sub-Activity"
android:parentActivityName=".MainChooser"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainChooser" />
</activity>
그런 다음 MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_child);
// my_child_toolbar is defined in the layout file
Toolbar myChildToolbar =
(Toolbar) findViewById(R.id.my_child_toolbar);
setSupportActionBar(myChildToolbar);
// Get a support ActionBar corresponding to this toolbar
ActionBar ab = getSupportActionBar();
// Enable the Up button
ab.setDisplayHomeAsUpEnabled(true);
}
그리고, 당신은 모두 설정됩니다!
출처 : Android 개발자 문서
위의 많은 유용한 솔루션을 알고 있지만 이번에는이 기사 (sdk 23이있는 현재 Android Studio 2.1.2)를 읽었을 때 위의 방법 중 일부가 작동하지 않습니다.
하위 활동에 대한 내 솔루션은 MapsActivity입니다.
먼저 parentActivity를 추가해야합니다.
AndroidManifest.xml
이처럼 :
<application ... >
...
<!-- Main activity (which has no parent activity) -->
<activity
android:name="com.example.myapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
.....
android:parentActivityName=".MainActivity" >
<!-- Support Parent activity for Android 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myapp.MainActivity" />
</activity>
</application>
둘째, 하위 활동이 AppCompatActivity
FragmentActivity가 아닌 확장되는지 확인하십시오 .
셋째, 재정의 onOptionsItemSelected()
방법
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon action bar is clicked; go to parent activity
this.finish();
return true;
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
이것이 도움이되기를 바랍니다!
onCreate ()에서 이것을 시도하십시오
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
클릭 이벤트의 경우
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; goto parent activity.
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
이를 위해 두 단계 만 거치면됩니다.
1 단계 : 태그 AndroidManifest.xml
에서이 매개 변수로 이동하여 추가 <activity>
-android:parentActivityName=".home.HomeActivity"
예:
<activity
android:name=".home.ActivityDetail"
android:parentActivityName=".home.HomeActivity"
android:screenOrientation="portrait" />
2 단계 :에서가 ActivityDetail
당신을 추가 action
이전 페이지 / 활동
예:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
onCreate 메소드 쓰기에서
Toolbar toolbar = findViewById(R.id.tool);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(ActivityOne.this, ActivityTwo.class));
finish();
}
그리고 이것은 xml 파일입니다.
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:id="@+id/tool">
styles.xml에서 다음으로 변경하십시오.
Theme.AppCompat.Light.NoActionBar
이것이 우리가해야 할 전부입니다.
귀하의 onCreate()
방법 에서이 줄을 추가하십시오
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
동일한 액티비티에서이 메소드를 추가하여 버튼 클릭을 처리합니다.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
이런 식으로 해결
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed(){
Intent backMainTest = new Intent(this,MainTest.class);
startActivity(backMainTest);
finish();
}
작업 코드가 화면으로 돌아갑니다.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(getApplicationContext(), "Home Clicked",
Toast.LENGTH_LONG).show();
// go to previous activity
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
public void initToolbar(){
//this set back button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//this is set custom image to back button
getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_btn_image);
}
//this method call when you press back button
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
ActionBar actionBar=getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
대답하기에는 너무 늦을 수 있지만 제 의견으로는 더 짧고 기능적인 해결책이 있습니다.
// Inside your onCreate method, add these.
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
// After the method's closing bracket, add the following method exactly as it is and voiulla, a fully functional back arrow appears at the action bar
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return true;
}
oncreate ()에서; 이 줄을 쓰십시오->
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
그런 다음 해당 클래스에서 아래 메소드를 구현하십시오.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Manifest.xml
<activity
android:name=".Activity.SecondActivity"
android:label="Second Activity"
android:parentActivityName=".Activity.MainActivity"
android:screenOrientation="portrait"></activity>
Kotlin에 작업 표시 줄 뒤로 버튼을 표시 하려면 두 가지 방법이 있습니다.
1. Android에서 제공하는 기본 작업 표시 줄 사용-활동에 작업 표시 줄이있는 테마를 사용해야합니다 (예 : Theme.AppCompat.Light.DarkActionBar).
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val actionBar = supportActionBar
actionBar!!.title = "your title"
actionBar.setDisplayHomeAsUpEnabled(true)
//actionBar.setDisplayHomeAsUpEnabled(true)
}
override fun onSupportNavigateUp(): Boolean {
onBackPressed()
return true
}
2. 나만의 액션 바 디자인 -기본 액션 바 비활성화-예 : Theme.AppCompat.Light.NoActionBar-activity.xml에 레이아웃 추가
<androidx.appcompat.widget.Toolbar
android:id="@+id/main_toolbar"
android:layout_width="match_parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="16dp">
<TextView
android:id="@+id/main_toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your Title"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.Toolbar>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setSupportActionBar(findViewById(R.id.main_toolbar))
}
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/main_action_toolbar"
android:icon="@drawable/ic_main_toolbar_item"
android:title="find"
android:layout_width="80dp"
android:layout_height="35dp"
app:actionLayout="@layout/toolbar_item"
app:showAsAction="always"/>
</menu>
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main_toolbar_item, menu)
leftToolbarItems = menu!!.findItem(R.id.main_action_toolbar)
val actionView = leftToolbarItems.actionView
val badgeTextView = actionView.findViewById<TextView>(R.id.main_action_toolbar_badge)
badgeTextView.visibility = View.GONE
actionView.setOnClickListener {
println("click on tool bar")
}
return super.onCreateOptionsMenu(menu)
}
업데이트 된 버전에서 getActionBar ()가 작동하지 않습니다!
대신이 방법으로이 작업을 수행 할 수 있습니다
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
안드로이드 제목 표시 줄에 다시 버튼을 추가 하면 2020 년에 도움이됩니다.