Java setText导致应用程序崩溃
我是android开发新手。我不明白为什么这个程序会在模拟器中崩溃,当我在Android模拟器上运行这个程序时,它会打开然后很快关闭,给我一条“不幸的是,hello world已经停止”的消息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
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" />