Java setText导致应用程序崩溃

Java setText导致应用程序崩溃,java,android,android-layout,Java,Android,Android Layout,我是android开发新手。我不明白为什么这个程序会在模拟器中崩溃,当我在Android模拟器上运行这个程序时,它会打开然后很快关闭,给我一条“不幸的是,hello world已经停止”的消息 public class HelloAndroidActivity extends Activity { /** Called when the activity is first created. */ @Overr

我是android开发新手。我不明白为什么这个程序会在模拟器中崩溃,当我在Android模拟器上运行这个程序时,它会打开然后很快关闭,给我一条“不幸的是,hello world已经停止”的消息

            public class HelloAndroidActivity extends Activity {
                /** Called when the activity is first created. */
                @Override
                public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.main);
                    TextView t=(TextView)findViewById(R.id.textView1);  
                    t.setText("Secoknd text to display!"); 

                }   
            }
xml文件:

            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="fill_parent"
                android:orientation="horizontal" >





                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="match_parent"
                    android:layout_height="38dp"
                    android:editable="true"
                    android:text="TextView" />

            </LinearLayout>

如果您提供的代码的TextView为空,则您必须设置错误的布局id。您的代码示例具有
setContentView(R.layout.main);
。您提供的xml是否可能来自main.xml以外的文件?

如果为不同的屏幕大小设计了多个布局文件,则必须命名为相同的id。如果id不匹配,则会发生这种情况

比如说

    public class HelloAndroidActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView t=(TextView)findViewById(R.id.textView1);  
        t.setText("Secoknd text to display!"); 
        }   
    }
Layout/main.xml

<TextView
     android:id="@+id/textView1"
     android:layout_width="match_parent"
     android:layout_height="38dp"
     android:editable="true"
     android:text="TextView" />

布局大型hdpi/main.xml

<TextView
     android:id="@+id/textView2"
     android:layout_width="match_parent"
     android:layout_height="38dp"
     android:editable="true"
     android:text="TextView" />


如果你在ldpi手机上运行,它可以工作。但是如果你在hdpi手机上运行,它找不到提供来自LogCat的错误,你会得到一个非常快速的答案。它是否生成了一个
NullPointerException
?在调用
setText
之前,通过调试器运行这段代码,并检查
t
是否为
null
。似乎main.x布局文件夹中的ml与常规布局不同。我刚刚将一个文件复制到另一个文件中,现在它可以工作了,这两个文件夹之间的区别是什么?main.xml是否必须在这两个文件夹中都相同?谢谢!对于不同的设备类型和屏幕大小,您可以有不同的文件夹。系统将根据设备运行情况选择资源正在删除您的代码。当不存在专用文件夹时,系统将返回layout/。我认为layout normal会在该文件夹存在时覆盖该文件夹。以下链接对此进行了说明:
<TextView
     android:id="@+id/textView2"
     android:layout_width="match_parent"
     android:layout_height="38dp"
     android:editable="true"
     android:text="TextView" />