4

내 앱에서 방향이 변경되면 작업 표시 줄의 제목이 탐색 창에서 선택한 조각의 제목에서 앱의 제목으로 변경됩니다.내비게이션 서랍 제목 변경 방향 변경시?

Navigation drawer example app은 조각이 주요 활동의 서브 클래스이기 때문에이 방향 변경에 제목을의 보유 및

getActivity().setTitle(planet); 

지금 내가 그래서 난 방법을 알고하지 않을 비트 초보자 해요 코드의 라인을 가지고 제목을 유지하고 코드를 구현하려면 도움을 줄 수 있습니까?

은 그냥 중 하나가보고 싶어 경우, 여기 방향 변경에 확실하지 않은 경우 가장 좋은 방법은 작업 표시 줄의 파편 타이틀을 유지하는 방법을 찾은 PlanetFragment

public static class PlanetFragment extends Fragment { 
    public static final String ARG_PLANET_NUMBER = "planet_number"; 

    public PlanetFragment() { 
     // Empty constructor required for fragment subclasses 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_planet, container, false); 
     int i = getArguments().getInt(ARG_PLANET_NUMBER); 
     String planet = getResources().getStringArray(R.array.planets_array)[i]; 

     int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()), 
         "drawable", getActivity().getPackageName()); 
     ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId); 
     getActivity().setTitle(planet); 
     return rootView; 
    } 
} 

답변

1

의 서브 클래스이지만 보인다 꽤 깨끗합니다.

public class Example extends Fragment{ 

private String[] titleList; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    titleList = getResources().getStringArray(R.array.sell_array); 
    getActivity().setTitle(titleList[0]); 

    return inflater.inflate(R.layout.fish, container, false); 
} 


} 

각 조각에는 각 배열 위치 번호가 있습니다. 또한, 주요 활동 클래스에서, 지금 내가 무슨 짓을했는지 여기 Navigation drawer example app,에서 각각의 조각 클래스

7

에서 처리되는 때문에 어떤 탐색 서랍 항목의 선택에 불필요한

setTitle(titleList[position]); 

을했다 :

: 당신의 활동의 onSaveInstanceState()

  • 당신의 활동의 onCreate()에3210

  • :

    if (saveInstanceState!=null) { setTitle(savedInstanceState.getCharSequence(KEY_STATE_TITLE)); }

희망이 도움이됩니다.

+0

'getActivity(). setTitle()'이어야합니다. –

4

@ maohieng의 대답은 나를 도왔지만 서랍이 오리엔테이션 변경에 열려 있으면 틀린 제목을 설정하고있었습니다. (화면 이름이 아니어야 했으므로 앱 제목이었습니다). 그래서 문제를 완벽하게 해결하는이 코드를 구현했습니다.

On onSaveInstanceState() 부울을 사용하여 서랍 서랍이 열려 있는지 확인합니다. 이상한 것 같다,하지만 난에서 onCreate()를 호출 할 때 방향 변경 후 false를 반환 isDrawerOpen(mDrawer) : 활동의 onCreate()

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putCharSequence("title", mTitle); 
    outState.putBoolean("isDrawerOpen", 
      mDrawerLayout.isDrawerOpen(mDrawerLinear)); 
} 

:

if (savedInstanceState == null) { 
    selectItem(YOUR_FRAGMENT); 
} else { 
    if (savedInstanceState.getBoolean("isDrawerOpen")) { 
     mTitle = savedInstanceState.getCharSequence("title"); 
    } else { 
     setTitle(savedInstanceState.getCharSequence("title")); 
    } 
} 
0

당신은 추가해야 setTitle이라는 (menuItem.getTitle()) ; 아래 그림과 같이,

@Override 공공 부울은 {(MenuItem의는 menuItem)

  //Checking if the item is in checked state or not, if not make it in checked state 
      if (menuItem.isChecked()) menuItem.setChecked(false); 
      else menuItem.setChecked(true); 


      **setTitle(menuItem.getTitle());** 
      //Closing drawer on item click 
      drawerLayout.closeDrawers(); 

희망이 도움을 onNavigationItemSelected.

관련 문제