2014-04-02 1 views
10

Google's document에 따르면 위로 버튼을 표시하려면 getActionBar().setDisplayHomeAsUpEnabled(true)이 필요합니다. 이클립스에서 마법사를 사용하여 베어 본 작업을 만들고 부모 작업을 지정했습니다. 자동으로 생성 된 코드에 getActionBar().setDisplayHomeAsUpEnabled(true)을 찾을 수 없지만이 활동이 시작되고 예상대로 작동하면 위로 버튼이 나타납니다. 아무도 이것에 관해 밝힐 수 있습니까?setDisplayHomeAsUpEnabled()를 사용하지 않고 위쪽 버튼을 표시하는 이유는 무엇입니까?

public class FooActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_foo); 

      //more code...  
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
      //more code... 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      //more code... 
      return rootView; 
     } 
    } 

} 

답변

13
+0

신속한 답변을 제공해 주셔서 감사합니다. 이는 문서가 잘못되었음을 의미합니까 (예 : getActionBar(). setDisplayHomeAsUpEnabled (true)가 중복 됨)? 또는 위로 버튼을 표시하기 위해 호출이 필요한 상황이 있습니까? – Hong

+0

나는 그것을 "잘못"이라고 부르지 않겠지 만, 좀 더 명확하게 다시 말할 수 있습니다. "parentActivityName"을 추가하는 것에 대해 "Doing (그렇게하면 시스템이 Up ...과 같은 탐색 패턴을 용이하게 할 수 있습니다"라는 상태입니다. 하지만 당신의 경우에는'ActionBar.setDisplayHomeAsUpEnabled'를 호출하는 것이 중복됩니다. – adneal

+0

setDisplayHomeAsUpEnabled가 필요한 상황이 있습니까? parentActivityName을 추가하면 수천 개의 다른 Android 기기 모델에 대해 위로 버튼이 있어야한다는 것을 확인하고 싶기 때문에이 질문을드립니다. 나는이 문서를 여러 번 읽었으며 parentActivityName을 추가하는 것이 "첫 번째 단계"(문서에서 인용)이며 두 번째 단계는 setDisplayHomeAsUpEnabled를 호출한다는 인상을줍니다. 세 번째 단계가있는 것 같습니다. 나는이 문서에 대한 제한된 이해를 유감스럽게 생각합니다. – Hong

3

Acitivty 내가 모든 가능한 아래 조합과 그 결과를 설명 당신의 parentActivityName 지정 : 두 android:parentActivityName=".MyActivity

  1. 을이 getActionBar().setDisplayHomeAsUpEnabled(true); - 뒤로 버튼이 나타나고, 그것은 작동한다;
  2. 너만이 android:parentActivityName=".MyActivity - 뒤로 버튼이 나타나고 위와 동일하게 작동합니다.
  3. 너만이 getActionBar().setDisplayHomeAsUpEnabled(true);입니다. - 뒤로 버튼이 나타나지만 클릭하면 아무데도 가지 않습니다.
  4. 매니페스트에 android:parentActivityName=".MyActivity이 있어도 getActionBar().setDisplayHomeAsUpEnabled(false);에 매개 변수를 false로 설정하면 뒤로 버튼이 표시되지 않습니다.

이것이 내 친구의 작동 방식입니다.

관련 문제