가로 모드 용 세로 모드 용 레이아웃이 두 개 있습니다. 세로의 경우 레이아웃 폴더 아래에 있고 풍경의 경우 레이아웃 랜드 폴더 아래에 있습니다. 둘 다 main.xml이라는 이름을 가지고 있습니다. 전환이 세로에서 가로 방향으로 오류없이 발생합니다. 다시 풍경에서 세로로 전환 할 때 어떤 이유에서든 세로 기반 레이아웃을로드하지 않고 정의한 루트 레이아웃을 찾을 수 없습니다. 여기가로 모드에서 세로 모드로 레이아웃을 전환 할 때의 문제
07-27 15:25:09.601: WARN/System.err(278): java.lang.ClassCastException: android.widget.LinearLayout
07-27 15:25:10.230: WARN/System.err(278): at com.me2youmob.swagwrap.ChickenWrapActivity.loadMBIIntoView(ChickenWrapActivity.java:102)
07-27 15:25:10.230: WARN/System.err(278): at com.me2youmob.swagwrap.ChickenWrapActivity.onCreate(ChickenWrapActivity.java:41)
07-27 15:25:10.230: WARN/System.err(278): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-27 15:25:10.250: WARN/System.err(278): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-27 15:25:10.250: WARN/System.err(278): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-27 15:25:10.250: WARN/System.err(278): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3815)
07-27 15:25:10.311: WARN/System.err(278): at android.app.ActivityThread.access$2400(ActivityThread.java:125)
07-27 15:25:10.311: WARN/System.err(278): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037)
07-27 15:25:10.311: WARN/System.err(278): at android.os.Handler.dispatchMessage(Handler.java:99)
07-27 15:25:10.322: WARN/System.err(278): at android.os.Looper.loop(Looper.java:123)
07-27 15:25:10.322: WARN/System.err(278): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-27 15:25:10.329: WARN/System.err(278): at java.lang.reflect.Method.invokeNative(Native Method)
07-27 15:25:10.329: WARN/System.err(278): at java.lang.reflect.Method.invoke(Method.java:521)
07-27 15:25:10.361: WARN/System.err(278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-27 15:25:10.361: WARN/System.err(278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-27 15:25:10.371: WARN/System.err(278): at dalvik.system.NativeStart.main(Native Method)
거기 코드 그 \ 로그 캣 출력이다
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int deviceRotation = getWindowManager().getDefaultDisplay().getRotation();
Utils.spPreferences = getSharedPreferences(Utils.PREFS_NAME, 0);
if (deviceRotation == 1)
{
int imgID = Utils.getMbiIndex("mbiIndex");
int drawBgId = Utils.getMbiDrawIndex(imgID);
try
{
ImageView ivLandView = (ImageView) findViewById(R.id.ivLandMbi);
ivLandView.setImageResource(drawBgId);
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
{
loadMBIIntoView();
handleButtonClicks();
}
}
코드
public void loadMBIIntoView()
{
int imgID = Utils.getMbiIndex("mbiIndex");
int drawBgId = Utils.getMbiDrawIndex(imgID);
try {
RelativeLayout llMain = (RelativeLayout) findViewById(R.id.rlMain);
Resources res = getResources();
Drawable drawMbi = res.getDrawable(drawBgId);
llMain.setBackgroundDrawable(drawMbi);
} catch (Exception e) {
e.printStackTrace();
}
}
가로 레이아웃 다음됨에 따라 loadMBIIntoView 방법 happenson 오류를 다음에서 onCreate이다에서 rlMain 레이아웃 자체가 없지만 초상화가 않습니다. 액티비티가 다시 시작될 경우 (나에게 괜찮은) 스크린 모드를 변경할 때마다 적절한 레이아웃을 자동으로로드하지 않아야합니까? 나는 이것에 대한 도움을 주시면 감사하겠습니다. 고맙습니다.
는 UPDATE : 오후 2시
나는 코드 있지만 여전히 줄 같은 오류를 추가했다. 선형 레이아웃을 상대 레이아웃으로 캐스팅하기 때문에 오류가 발생합니다. 여기가 문제의 위치입니다. 세로 레이아웃 ("main.xml")은 기본 "레이아웃"폴더에 있습니다. 이 레이아웃에는 상대 레이아웃 ("rlmain")이 있습니다. 랜드 스케이프 레이아웃 ("main.xml")은 layout-land 폴더에 있습니다. 이 main.xml에는 UI 사양이 다르며 선형 레이아웃이 있습니다. 기본적으로 세로 모드로로드합니다. 가로로로드하면 Ctrl + F11을 눌러 가로로 변경하면 레이아웃 랜드 폴더의 레이아웃이 잘로드됩니다. 그런 다음 Ctrl + F11을 다시 눌러 세로 레이아웃으로 변경합니다. 여기서 기본 레이아웃 폴더의 main.xml이로드되어 있어야하지만로드되지 않아 케이스 예외가 발생합니다.
랜드 스케이프 파일에 rlMain이 없습니까? 안드로이드는 레이아웃과 레이아웃 랜드의 레이아웃을 자동으로 전환하지만 거기에없는 레이아웃은 생성하지 않습니다. rlMain이 가로 파일에 없으면 findViewById (R.id.rlMain)는 null을 반환하고 사용하려고하면 오류가 발생합니다. – theisenp
예 landscape 파일에 rlMain이 없습니다. 가로 모드가 활성화 될 때 rlMain이 호출되지 않도록 제한 조건을 적용했습니다. 세로 레이아웃을로드해야 할 때 세로 모드로 다시 전환 할 때 오류가 발생하고 rlMain을 찾을 수 있어야합니다. – vikramjb
알았어. ChickenWrapActivity의 102 행에 뭐가 들어 있니? – theisenp