2013-06-03 48 views
0

我正在製作一個應用程序,我希望用戶在縱向模式下具有其他視圖,而不是在橫向模式下。 所以我做了1個普通的xml-fileen,然後做了另一個我在製作xml文件時用於橫向模式的簽名。因此,automaticcaly創建了一個名爲layout-land的額外文件夾,其中新的xml文件(與舊文件名相同)位於該文件夾中。風景模式錯誤

但是,無論何時我現在在橫向模式下啓動我的應用程序,它會崩潰(xml文件用於MainActivity.java)?

我的XML文件爲橫向模式:

<?xml version="1.0" encoding="utf-8"?> 
    RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/landscape1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:text="Houd uw telefoon rechtop en herstart de app voor correcte weergave" 
     android:textColor="#665252" /> 

</RelativeLayout> 

logcat的輸出:

06-03 19:22:14.664: D/AndroidRuntime(285): Shutting down VM 

06-03 19:22:14.664: W/dalvikvm(285): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 

06-03 19:22:14.684: E/AndroidRuntime(285): FATAL EXCEPTION: main 

06-03 19:22:14.684: E/AndroidRuntime(285): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rome/com.example.rome.MainActivity}: 
java.lang.NullPointerException 

06-03 19:22:14.684: E/AndroidRuntime(285): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 

06-03 19:22:14.684: E/AndroidRuntime(285): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 

06-03 19:22:14.684: E/AndroidRuntime(285): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 

06-03 19:22:14.684: E/AndroidRuntime(285): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 

06-03 19:22:14.684: E/AndroidRuntime(285): at android.os.Handler.dispatchMessage(Handler.java:99) 

06-03 19:22:14.684: E/AndroidRuntime(285): at android.os.Looper.loop(Looper.java:123) 

06-03 19:22:14.684: E/AndroidRuntime(285): at android.app.ActivityThread.main(ActivityThread.java:4627) 

06-03 19:22:14.684: E/AndroidRuntime(285): at java.lang.reflect.Method.invokeNative(Native Method) 

06-03 19:22:14.684: E/AndroidRuntime(285): at java.lang.reflect.Method.invoke(Method.java:521) 

06-03 19:22:14.684: E/AndroidRuntime(285): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 

06-03 19:22:14.684: E/AndroidRuntime(285): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 

06-03 19:22:14.684: E/AndroidRuntime(285): at dalvik.system.NativeStart.main(Native Method) 

06-03 19:22:14.684: E/AndroidRuntime(285): Caused by: java.lang.NullPointerException 

06-03 19:22:14.684: E/AndroidRuntime(285): at com.example.rome.MainActivity.onCreate(MainActivity.java:21) 

06-03 19:22:14.684: E/AndroidRuntime(285): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 

06-03 19:22:14.684: E/AndroidRuntime(285): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 

06-03 19:22:14.684: E/AndroidRuntime(285): ... 11 more 

Mainactivity.java:

package com.example.rome; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.EditText; 
import android.widget.Button; 
import android.view.View; 
import android.widget.Toast; 
import android.content.Intent; 
import android.view.MenuInflater; 
import android.view.MenuItem; 


public class MainActivity extends Activity implements View.OnClickListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    findViewById(R.id.imageButton1).setOnClickListener(this); 
    findViewById(R.id.imageButton2).setOnClickListener(this); 
    findViewById(R.id.imageButton3).setOnClickListener(this); 
    findViewById(R.id.imageButton4).setOnClickListener(this); 
    findViewById(R.id.imageButton5).setOnClickListener(this); 
    findViewById(R.id.imageButton6).setOnClickListener(this); 
    findViewById(R.id.imageButton7).setOnClickListener(this); 
    findViewById(R.id.imageButton8).setOnClickListener(this); 
    findViewById(R.id.imageButton9).setOnClickListener(this); 



} 


    @Override 
    public void onClick(View v){ 
     switch(v.getId()){ 
     case R.id.imageButton1: 
      startActivity(new Intent(MainActivity.this, Metros.class)); 
      break; 
     case R.id.imageButton2: 
      startActivity(new Intent(MainActivity.this, Programma.class)); 
      break; 
     case R.id.imageButton8: 
       startActivity(new Intent(MainActivity.this, Italiaans.class)); 
       break; 
     //-- more cases -- 
     case R.id.imageButton9: 
       startActivity(new Intent(MainActivity.this, Telefoonnummers.class)); 
       break; 
     case R.id.imageButton7: 
       startActivity(new Intent(MainActivity.this, Kaart.class)); 
       break; 
     case R.id.imageButton5: 
       startActivity(new Intent(MainActivity.this, Restaurants.class)); 
       break; 
     case R.id.imageButton3: 
       startActivity(new Intent(MainActivity.this, Bus.class)); 
       break; 
     case R.id.imageButton4: 
       startActivity(new Intent(MainActivity.this, Winkelen.class)); 
       break; 
     case R.id.imageButton6: 
       startActivity(new Intent(MainActivity.this, Syllabus.class)); 
       break; 
     } 
    } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.Over: 
    startActivity(new Intent(this, Over.class)); 
    return true; 
    case R.id.Hotels: 
    startActivity(new Intent(this, Hotels.class)); 
    return true; 
    default: 
    return super.onOptionsItemSelected(item); 
    } 
} 


} 

activity_main.xml中(人像模式版):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#0B0E15" 
android:gravity="center_horizontal" 
tools:context=".MainActivity" > 

<ImageButton 
    android:id="@+id/imageButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_centerHorizontal="true" 
    android:minHeight="100dp" 
    android:minWidth="100dp" 
    android:src="@drawable/metro2" /> 

<ImageButton 
    android:id="@+id/imageButton2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_toLeftOf="@+id/imageButton1" 
    android:minHeight="100dp" 
    android:minWidth="100dp" 
    android:src="@drawable/programma" /> 

<ImageButton 
    android:id="@+id/imageButton3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/imageButton1" 
    android:layout_toRightOf="@+id/imageButton1" 
    android:minHeight="100dp" 
    android:minWidth="100dp" 
    android:src="@drawable/bus2" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="18dp" 
    android:height="20dp" 
    android:textColor="#FFFFFF" 
    android:width="175dp" /> 

<ImageButton 
    android:id="@+id/imageButton4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/imageButton1" 
    android:layout_toLeftOf="@+id/imageButton3" 
    android:minHeight="100dp" 
    android:minWidth="100dp" 
    android:src="@drawable/supermarkt2" /> 

<ImageButton 
    android:id="@+id/imageButton5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/imageButton2" 
    android:layout_below="@+id/imageButton2" 
    android:minHeight="100dp" 
    android:minWidth="100dp" 
    android:src="@drawable/restaurants2" /> 

<ImageButton 
    android:id="@+id/imageButton6" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/imageButton4" 
    android:layout_toRightOf="@+id/imageButton4" 
    android:minHeight="100dp" 
    android:minWidth="100dp" 
    android:src="@drawable/syllabus2" /> 

<ImageButton 
    android:id="@+id/imageButton7" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/imageButton4" 
    android:layout_toLeftOf="@+id/imageButton6" 
    android:minHeight="100dp" 
    android:minWidth="100dp" 
    android:src="@drawable/kaartrome2" /> 

<ImageButton 
    android:id="@+id/imageButton8" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/imageButton6" 
    android:layout_alignTop="@+id/imageButton7" 
    android:minHeight="100dp" 
    android:minWidth="100dp" 
    android:src="@drawable/italiaans2" /> 

<ImageButton 
    android:id="@+id/imageButton9" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/imageButton7" 
    android:layout_toLeftOf="@+id/imageButton7" 
    android:minHeight="100dp" 
    android:minWidth="100dp" 
    android:src="@drawable/telefoon2" /> 

    <TextView 
     android:id="@+id/Streeptop" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView1" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_centerHorizontal="true" 
     android:text="______________________________________________" 
     android:textColor="#FFFFFF" /> 

    <TextView 
     android:id="@+id/Streep" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/Streeptop" 
     android:layout_below="@+id/imageButton7" 
     android:text="_______________________________" 
     android:textColor="#FFFFFF" /> 

</RelativeLayout> 

你能幫我嗎?

由於提前, 井

+0

你可以發佈logcat時,它崩潰? – codeMagic

+0

你可以發佈崩潰的Logcat輸出嗎?澄清一下,您有兩個名爲「xml-file.xml」的XML文件,一個位於佈局文件夾中,另一個位於layout-land文件夾中?此外,您的RelativeLayout缺少開頭的「<」標籤,但我懷疑這是您的問題,可能是複製粘貼錯誤。 – MattDavis

+0

我得到了兩個名爲activity_main.xml的文件開始標籤是複製粘貼錯誤是。我會給logcat現在: – Ide

回答

0

從Android開發者會議下面的視頻顯示了微觀和宏觀迴流的實例(開始於大約11分鐘)。 http://www.youtube.com/watch?v=Jl3-lzlzOJI

對於基本的宏迴流(又名土地VS人像)你想有:

文件中-the縱向視圖: RES /佈局/ your_xml_file.xml

-The橫向視圖在文件中: res/layout-land/your_xml_file.xml

即2個文件在兩個單獨的文件夾中具有相同的名稱。似乎沒有任何與你的XML代碼扭曲。

+0

我只是說你說的話,現在我甚至將我的肖像文件移動到res/layout/layout-port,並且在肖像模式下每個人都很好,但在風景中,應用程序仍然崩潰。 – Ide

0

問題是,您正在爲所有這些Buttons設置onClickListener,這在橫向方面顯然不存在。你需要把支票在那裏無論是如果Buttonsnull沒有設置監聽器或更好,但檢查哪些layout充氣或設備處於哪個方位。

我可以給做上述的例子,但是,因爲您對Buttons的所有Buttons使用相同的偵聽器,所以在xml縱向文件中設置onClick可能會更容易。對於每個Button這樣做

<Button 
    android:id="@+id/imageButton1" 
    android:onClick="functionName" 

然後在你的Java代碼只是命名onClick無論你在XML中使用,你不必設置這些聽衆中onCreate()。所以,你就不需要implements View.OnClickListener,可能採取了所有的

findViewById(R.id.imageButton1).setOnClickListener(this); 

This SO answer of mine可能有助於創造Intents更有效。我喜歡它,但可能會或可能不適合你。

+0

但是,它不會導致在它下面的@override部分有任何問題,我有案例r.id .......等......的代碼? – Ide

+0

現在鏈接(意圖)崩潰? – Ide

+0

'switch'仍然可以工作。如果您的「意圖」不能正常工作,您有另外的問題。他們以前在工作嗎? – codeMagic