Java 获得;“强制关闭”;用我的第一个HelloWorld登录android代码
我试着跟着实验室学习 这是密码 NameGetter.javaJava 获得;“强制关闭”;用我的第一个HelloWorld登录android代码,java,android,android-emulator,Java,Android,Android Emulator,我试着跟着实验室学习 这是密码 NameGetter.java public class NameGetter extends Activity implements OnClickListener { EditText name; Button submit; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedIns
public class NameGetter extends Activity implements OnClickListener {
EditText name;
Button submit;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.name_getter);
name = (EditText) this.findViewById(R.id.editText1);
submit = (Button) this.findViewById(R.id.button1);
submit.setOnClickListener(this);
}
public void onClick(View v) {
String userName = name.getText().toString();
Intent submitIntent = new Intent(NameGetter.this, HelloWorld.class);
submitIntent.putExtra("username", userName);
this.startActivity(submitIntent);
}
}
public class HelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = (TextView) this.findViewById(R.id.textViewHello);
Bundle name = this.getIntent().getExtras();
if(name != null) {
String nameEntered = name.getString("username");
if(nameEntered != null) {
tv.setText(nameEntered);
} else {
tv.setText("nameEntered is null");
}
} else {
tv.setText("name is null");
}
}
}
HelloWorld.java
public class NameGetter extends Activity implements OnClickListener {
EditText name;
Button submit;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.name_getter);
name = (EditText) this.findViewById(R.id.editText1);
submit = (Button) this.findViewById(R.id.button1);
submit.setOnClickListener(this);
}
public void onClick(View v) {
String userName = name.getText().toString();
Intent submitIntent = new Intent(NameGetter.this, HelloWorld.class);
submitIntent.putExtra("username", userName);
this.startActivity(submitIntent);
}
}
public class HelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = (TextView) this.findViewById(R.id.textViewHello);
Bundle name = this.getIntent().getExtras();
if(name != null) {
String nameEntered = name.getString("username");
if(nameEntered != null) {
tv.setText(nameEntered);
} else {
tv.setText("nameEntered is null");
}
} else {
tv.setText("name is null");
}
}
}
我可以在编辑文本框中输入文本,当我按下提交按钮时,我得到一个强制关闭。LogCat说:
java.lang.RuntimeException:无法启动活动组件信息{com.myPackageHello.com/com.myPackageHello.com.HelloWorld}:java.lang.NullPointerException`
编辑:谢谢大家!这是this.setContentView(R.layout.main)行 插入
setContentView(R.layout.<layout_id>);
请注意,在NameGetter活动中,您将内容视图设置为:
this.setContentView(R.layout.name_getter);
但在你的地狱世界活动中,你还没有这样做。在super.onCreate之后和findViewById之前添加该行。祝你好运 jsut在应用程序标记内的androidmanifest.xml中声明HelloWorld活动,如下所示
<activity
android:name=".HelloWorld"
android:label="@string/app_name" >
</activity>
您在maanifest中声明了HelloWorld吗?setContentView(R.layout.)在哪里;HelloWorld??我想您假设两个活动之间共享相同的UI,这是错误的。两个活动使用它们自己的UI,因此您必须调用setContentView(R.layout.name\u getter);在HelloWorld类中,位于super.onCreate()之后。如果是,则将抛出ActivityNotFoundException而不是NPE。