Различные макеты по изменению ориентации - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть два файла main.xml в папках layout-land и layout-port, и когда ориентация телефона меняется, он вызывает перезагрузку main.xml.

@Override
    public void onConfigurationChanged(Configuration configure){
        super.onConfigurationChanged(configure);
        setContentView(R.layout.main);

Работает нормально в портретной ориентации, но нажатие любой кнопки изображения на странице в альбомной ориентации приводит к сбою приложения. Все кнопки изображения при нажатии изменяют изображение с именем grid на другое изображение. Кнопки, открывающие другую страницу, отлично работают в обоих макетах. Вот пример кода.

final ImageView imageView = (ImageView)findViewById(R.id.grid);
// This is an imagebutton
findViewById(R.id.plank).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                imageView.setImageResource(R.drawable.gridplanks);
            }
    });
// This is a button that brings up a new page
      findViewById(R.id.mcg).setOnClickListener(new OnClickListener() {
             @Override
              public void onClick(View view) {
                 startActivity(new Intent("com.example.minecraftcraftingguide.MCG"));
                 }
});

Это то, что тебе нужно? Извините, новичок в программировании.

>09-18 22:20:46.688: ERROR/AndroidRuntime(334): FATAL EXCEPTION: main
09-18 22:20:46.688: ERROR/AndroidRuntime(334): java.lang.NullPointerException
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at com.example.minecraftcraftingguide.Menu$1.onClick(Menu.java:27)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at android.view.View.performClick(View.java:2485)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at android.view.View$PerformClick.run(View.java:9080)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at android.os.Handler.handleCallback(Handler.java:587)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at android.os.Looper.loop(Looper.java:123)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at android.app.ActivityThread.main(ActivityThread.java:3683)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at java.lang.reflect.Method.invokeNative(Native Method)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at java.lang.reflect.Method.invoke(Method.java:507)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-18 22:20:46.688: ERROR/AndroidRuntime(334):     at dalvik.system.NativeStart.main(Native Method)

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

У вас есть main.xml в папке макета по умолчанию или только два в layout-port и layout-land?

На вашем месте я бы переместил файл из layout-port на вашпапка макета по умолчанию.Тогда приложение будет использовать файл в layout-land, если оно находится в альбомной папке, а в противном случае (если приложение находится в портретном режиме) файл будет использоваться в папке по умолчанию.

Еще один совет: проверьтеправописание в обоих XML-файлах.Возможно, вам не хватает символа в одном из идентификаторов кнопок.

0 голосов
/ 19 сентября 2011

Вы должны удалить декалибровку ConfigChanges в mainfest, и вам не нужно писать setcontentView () в методе onOnfigurationChanged (), фактически, после объявления в mainfest вам не нужно ничего писать в вашей программе, андроид автоматически получит XML-файл ландшафта, находящийся в XML-файле layout-land.

Потому что всякий раз, когда вы вызываете setContentView (), вы должны снова объявлять его элементы. !!!

Просто упомяните в мейнфесте, в этом теге активности android: configChanges = keyboardHidden | ориентация или же Не пишите ничего в вашем методе onConfigChanged ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...