9
SwitchCompat을 작업 표시 줄로 설정하려고 할 때 오류가 발생합니다. 여기 작업 모음의 SwitchCompat, 단편으로
여기의 onCreateOptionsMenu 조각에서 내 abswitch.xml 다음<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/abswitch"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<android.support.v7.widget.SwitchCompat
android:id="@+id/switchForActionBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="" />
</RelativeLayout>
내 profile_menu.xml
<?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/myswitch"
android:title=""
app:showAsAction="always"
android:actionLayout="@layout/abswitch"/>
</menu>
하고
다음@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.profile_menu, menu);
MenuItem item = menu.findItem(R.id.myswitch);
item.setActionView(R.layout.abswitch);
SwitchCompat switchCompat = (SwitchCompat) item.getActionView();
super.onCreateOptionsMenu(menu, inflater);
}
내가하려고 내가 매번 얻을 오류입니다 내 앱 시작
Process: ru.dennes544.vkapp, PID: 15974
java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.support.v7.widget.SwitchCompat
at ru.dennes544.vkapp.Profile.onCreateOptionsMenu(Profile.java:216)
at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:1868)
at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:1989)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:276)
at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:276)
at android.support.v7.app.ActionBarActivityDelegate$1.onCreatePanelMenu(ActionBarActivityDelegate.java:79)
at android.support.v7.widget.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:49)
at android.support.v7.internal.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:459)
at android.support.v7.internal.app.ToolbarActionBar$1.run(ToolbarActionBar.java:69)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
미리 감사드립니다.
P. 붙여 넣기 링크를 사용하여 죄송합니다. xml의 서식을 올바르게 지정하지 않았습니다.
EDIT : 알아 냈습니다.
는<item
android:id="@+id/toggleservice"
app:actionViewClass="android.support.v7.widget.SwitchCompat"
app:showAsAction="always"
android:title=""/>
지금
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.profile_menu, menu);
MenuItem item = menu.findItem(R.id.toggleservice);
SwitchCompat switchCompat = (SwitchCompat) MenuItemCompat.getActionView(item);
super.onCreateOptionsMenu(menu, inflater);
}
의 작업 Profile.class
에서 profile_menu.xml 에서 변경되었습니다. 감사합니다 여러분!SwitchCompat switchCompat = (SwitchCompat) MenuItemCompat.getActionView(item);
당신이해야 할 : 대신
'item.getActionView()가'상대 레이아웃입니다. 아마 액션 뷰에서 또 다른'findViewById()'를 할 필요가있을 것이다. –
@ S.D. 너에게 열심히하지 않으면 더 설명 할 수 있을까? 인스턴트 메신저 안드로이드에 프로그래밍 ... – dennes544
@ S.D. 나는 그것을 고쳤다. – dennes544