我创建了一个菜单,当我点击注册表时,我想打开一个只有一行文本的新类。
应用程序打开并运行,但当我点击菜单中的“注册”按钮时,应用程序崩溃了。我没有代码错误。
你能看到我的问题吗?
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.register:
Intent intent = new Intent(MeorNot.this, AddMember.class);
startActivity(intent);
return true;
}
}
这是我尝试打开的新课程
package com.meornotFinal;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class AddMember extends Activity {
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
TextView textview = new TextView(this);
textview.setText("Add member");
this.setContentView(textview);
}
}
答案 0 :(得分:4)
检查您的活动
<activity android:name="AddMember.class"> in AndroidManifest.xml file.
你忘了添加这一行。所以在androidmanifest.xml文件中也添加这一行。
答案 1 :(得分:1)
您正尝试在View
而不是setContentView()
layout
this.setContentView(textview);
如果您打算这样做,那么您需要以类似
的方式以编程方式创建布局RelativeLayout relativeLayout = new RelativeLayout(this);
然后您可以将TextView
添加到此处,并在setContentView()
除非您需要这样做,否则更简单的方法可能是创建xml布局,然后在调用TextView
之后通过findViewById(R.id.textView1)
从setContentView(R.layout.your_layout_file);
获取Caused by: java.lang.NullPointerException
08-07 08:24:02.516: ERROR/AndroidRuntime(334): at your_app.org.ThisActivity.onCreate(ThisActivity.java:26)
<强> logcat的强>
要打开logcat,如果尚未在Eclipse中,请转到窗口 - &gt;显示视图 - &gt;其他 - &gt; Android-&GT; logcat中。
这将为您提供一个控制台,用于记录错误和其他调试信息。当你的应用程序崩溃时,它会给你原因,通常是一个带有行号的java文件。如果错误发生在该行之前,您可能需要进一步挖掘,但它会为您提供一个良好的起点。
一个例子可能是
ThisActivity
然后你知道要开始查看{{1}}的第26行是否为null
答案 2 :(得分:1)
点击注册按钮后您调用的活动的当前代码块:
public class AddMember extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textview = new TextView(this);
textview.setText("Add member");
this.setContentView(textview);
}
}
您需要将this.setContentView(textview);
更改为以下内容:
public class AddMember extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_layout_in_your_layout_folder);
// CAST YOUR TEXTVIEW HERE
}
}
在a_layout_in_your_layout_folder
中,您可以保留一个LinearLayout
并在运行时添加TextView
。我没有完全看到做这样的事情,因为在布局XML中声明TextView
将是一个更简单的选项。
但我认为对他自己而言。