我有 2 个视图,MainActivity
并且UnitActivity
. 在主要活动中有一些按钮,当用户点击它们时,我想带上 uo UnitActivity
。
在UnitActivity
布局文件中有一些视图,如 TextView。例如,如果用户单击一个名为btn_marine
I want to fill layout with information about marine(星际争霸游戏中的一个单位,如果你知道的话:P)的按钮。
所以我的想法是当用户点击每个单元的按钮时,我UnitActivity
会用我拥有的关于该单元的信息填充布局的文本和图像。
目前,我正在尝试对其进行硬编码,我的意思是在开始意图之前,并且我有以下OnCreate
方法中的按钮事件MainActivity
:
Button btn_marine = (Button) findViewById(R.id.btn_unit_marine);
btn_marine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, UnitActivity.class);
TextView unitNameView = (TextView) findViewById(R.id.textViewUnitName);
unitNameView.setText("Marine!"); //this is line 28 with error
startActivity(intent);
}
});
但是,一旦我单击按钮,应用程序就会退出,并出现以下错误logcat
:
07-29 14:56:03.906 12696-12696/com.eetutorials.terranmate E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.eetutorials.terranmate.MainActivity$1.onClick(MainActivity.java:28)
at android.view.View.performClick(View.java:4204)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
所以我的问题是我的代码有什么问题,而且,你认为做这件事的最好方法是什么?我试图创建一个Unit
包含每个单元信息的类,但我不知道如何从该类中填充 Intent。
我的意思是如何将该类传递给UnitActivity
以便自动填充视图?
例如,这是Unit
我想做的课程:
public class Unit
{
private String Name;
private String HitPoint;
private String Armor;
private DamageModifiers DamageModifier;
private String BaseDamage;
private String Description;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getHitPoint() {
return HitPoint;
}
public void setHitPoint(String hitPoint) {
HitPoint = hitPoint;
}
public String getArmor() {
return Armor;
}
public void setArmor(String armor) {
Armor = armor;
}
public DamageModifiers getDamageModifier() {
return DamageModifier;
}
public void setDamageModifier(DamageModifiers damageModifier) {
DamageModifier = damageModifier;
}
public String getBaseDamage() {
return BaseDamage;
}
public void setBaseDamage(String baseDamage) {
BaseDamage = baseDamage;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
}