2013-06-03 49 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