Programing

작업 표시 줄에 뒤로 버튼 표시

lottogame 2020. 6. 2. 21:20
반응형

작업 표시 줄에 뒤로 버튼 표시


나는 표시하기 위해 노력하고있어 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.

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

공식 솔루션

이 두 코드 스 니펫을 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>

둘째, 하위 활동이 AppCompatActivityFragmentActivity가 아닌 확장되는지 확인하십시오 .

셋째, 재정의 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);
        }
    }

이것이 도움이되기를 바랍니다!


이를 위해 두 단계 만 거치면됩니다.

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 () 메소드 안에 추가하십시오

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

이것을 oncreate () 메소드 외부에 추가하십시오.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}

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

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

이것이 우리가해야 할 전부입니다.


이런 식으로 해결

@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>

onCreate 함수에 아래 코드를 추가하십시오.

getSupportActionBar (). setDisplayHomeAsUpEnabled (true);

And then override: @Override public boolean onOptionsItemSelected(MenuItem item){ onBackPressed(); return true; }


In your onCreate method add this line

setTitle("Your title");\\if you want to change

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

and add this method to your activity

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                this.finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

참고URL : https://stackoverflow.com/questions/15686555/display-back-button-on-action-bar

반응형