gpt4 book ai didi

java - Android奇怪的ComponentInfo NullPointerException

转载 作者:行者123 更新时间:2023-12-01 14:36:42 26 4
gpt4 key购买 nike

所以我试图为 Android 制作一个非常简单的 MVC 应用程序。 Observer 正确实现并且 Observable 扩展正确,所以一切都很顺利。但是,每当我运行该应用程序时,我都会收到 NullPointerException。谁能弄清楚为什么吗?这一定是我缺少的一些简单的东西。

activity_main.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/nameView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="@string/hello_world"
android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
android:id="@+id/nameSet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="@string/change"
android:layout_marginTop="20dp"
android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
android:id="@+id/storeView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="@string/hello_world"
android:layout_marginTop="80dp"
android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
android:id="@+id/storeSet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="@string/change"
android:layout_marginTop="100dp"
android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

</ScrollView>

MainActivity.java

public class MainActivity extends Activity implements Observer{
private ClipboardModel model;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.model = new ClipboardModel();
System.out.println(this.model.getName());
this.model.addObserver(this);
//redraw();
setContentView(R.layout.activity_main);
}

@Override
public void update(Observable arg0, Object arg1) {
redraw();
}

private void redraw(){
TextView nameView = (TextView)findViewById(R.id.nameView);
nameView.setText(this.model.getName());
TextView storeView = (TextView)findViewById(R.id.storeView);
storeView.setText(this.model.getStore());
}

/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}*/

}

ClipboardModel.java

public class ClipboardModel extends Observable{

private String name;

private String store;

private int[] a;
private int[] b;
private int[] c;
private int[] d;
private int[] e;
private int[] g;
private int[] h;

private int[] f;
private int[] w;
private int[] s;

private int[] l;
private int[] p;
private int[] v;
private int[] x;

private int ldw;
private int pai;
private int pep;
private int ali;
private int cpp;

private int gps;
private int rsn;
private int fuel;
private int xm;
private int cs;

/**
* Constructor for ClipboardModel
*/
public ClipboardModel(){
this.a = new int[3];
this.b = new int[3];
this.c = new int[3];
this.d = new int[3];
this.e = new int[3];
this.g = new int[3];
this.h = new int[3];

this.f = new int[3];
this.w = new int[3];
this.s = new int[3];

this.l = new int[3];
this.p = new int[3];
this.v = new int[3];
this.x = new int[3];

this.ldw = 0;
this.pai = 0;
this.pep = 0;
this.ali = 0;
this.cpp = 0;

this.gps = 0;
this.rsn = 0;
this.fuel = 0;
this.xm = 0;
this.cs = 0;

this.name = "Name";
this.store = "Store";
}

/**
* Add a car to the appropriate array
* @param type - Category of car
* @param clean - whether or not the car is clean
*/
public void addCar(String type, boolean clean){
if(type.equals("a")){
this.a[0]++;
if(clean)
this.a[1]++;
else
this.a[2]++;
}
else if(type.equals("b")){
this.b[0]++;
if(clean)
this.b[1]++;
else
this.b[2]++;
}

else if(type.equals("c")){
this.c[0]++;
if(clean)
this.c[1]++;
else
this.c[2]++;
}

else if(type.equals("d")){
this.d[0]++;
if(clean)
this.d[1]++;
else
this.d[2]++;
}

else if(type.equals("e")){
this.e[0]++;
if(clean)
this.e[1]++;
else
this.e[2]++;
}

else if(type.equals("g")){
this.g[0]++;
if(clean)
this.g[1]++;
else
this.g[2]++;
}

else if(type.equals("b")){
this.h[0]++;
if(clean)
this.h[1]++;
else
this.h[2]++;
}

else if(type.equals("f")){
this.f[0]++;
if(clean)
this.f[1]++;
else
this.f[2]++;
}

else if(type.equals("w")){
this.w[0]++;
if(clean)
this.w[1]++;
else
this.w[2]++;
}

else if(type.equals("s")){
this.s[0]++;
if(clean)
this.s[1]++;
else
this.s[2]++;
}

else if(type.equals("l")){
this.l[0]++;
if(clean)
this.l[1]++;
else
this.l[2]++;
}

else if(type.equals("p")){
this.p[0]++;
if(clean)
this.p[1]++;
else
this.p[2]++;
}

else if(type.equals("v")){
this.v[0]++;
if(clean)
this.v[1]++;
else
this.v[2]++;
}

else if(type.equals("x")){
this.x[0]++;
if(clean)
this.x[1]++;
else
this.x[2]++;
}


setChanged();
notifyObservers();
}

/**
* Remove a car from the appropriate array
* @param type - Category of car
* @param clean - Whether or not the car is clean
*/
public void removeCar(String type, boolean clean){
if(type.equals("a")){
this.a[0]--;
if(clean)
this.a[1]--;
else
this.a[2]--;
}
else if(type.equals("b")){
this.b[0]--;
if(clean)
this.b[1]--;
else
this.b[2]--;
}

else if(type.equals("c")){
this.c[0]++;
if(clean)
this.c[1]--;
else
this.c[2]--;
}

else if(type.equals("d")){
this.d[0]--;
if(clean)
this.d[1]--;
else
this.d[2]--;
}

else if(type.equals("e")){
this.e[0]--;
if(clean)
this.e[1]--;
else
this.e[2]--;
}

else if(type.equals("g")){
this.g[0]--;
if(clean)
this.g[1]--;
else
this.g[2]--;
}

else if(type.equals("b")){
this.h[0]--;
if(clean)
this.h[1]--;
else
this.h[2]--;
}

else if(type.equals("f")){
this.f[0]--;
if(clean)
this.f[1]--;
else
this.f[2]--;
}

else if(type.equals("w")){
this.w[0]--;
if(clean)
this.w[1]--;
else
this.w[2]--;
}

else if(type.equals("s")){
this.s[0]--;
if(clean)
this.s[1]--;
else
this.s[2]--;
}

else if(type.equals("l")){
this.l[0]--;
if(clean)
this.l[1]--;
else
this.l[2]--;
}

else if(type.equals("p")){
this.p[0]--;
if(clean)
this.p[1]--;
else
this.p[2]--;
}

else if(type.equals("v")){
this.v[0]++;
if(clean)
this.v[1]--;
else
this.v[2]--;
}

else if(type.equals("x")){
this.x[0]--;
if(clean)
this.x[1]--;
else
this.x[2]--;
}


setChanged();
notifyObservers();
}

/**
* Add a CSI
* @param type - type of CSI to add
*/
public void addCSI(String type){
if(type.equals("ldw"))
this.ldw++;
else if(type.equals("pai"))
this.pai++;
else if(type.equals("pep"))
this.pep++;
else if(type.equals("ali"))
this.ali++;
else if(type.equals("cpp"))
this.cpp++;
else if(type.equals("gps"))
this.gps++;
else if(type.equals("rsn"))
this.rsn++;
else if(type.equals("fuel"))
this.fuel++;
else if(type.equals("xm"))
this.xm++;
else if(type.equals("cs"))
this.cs++;


setChanged();
notifyObservers();
}

/**
* Remove a CSI
* @param type - type of CSI to remove
*/
public void removeCSI(String type){
if(type.equals("ldw"))
this.ldw--;
else if(type.equals("pai"))
this.pai--;
else if(type.equals("pep"))
this.pep--;
else if(type.equals("ali"))
this.ali--;
else if(type.equals("cpp"))
this.cpp--;
else if(type.equals("gps"))
this.gps--;
else if(type.equals("rsn"))
this.rsn--;
else if(type.equals("fuel"))
this.fuel--;
else if(type.equals("xm"))
this.xm--;
else if(type.equals("cs"))
this.cs--;


setChanged();
notifyObservers();
}

/**
* Setter for name
* @param name - Employee name
*/
public void setName(String name){
this.name = name;


setChanged();
notifyObservers();
}

/**
* Setter for store
* @param store - Store name
*/
public void setStore(String store){
this.store = store;

setChanged();
notifyObservers();
}

/**
* Getter for name
* @return this.name
*/
public String getName(){
return this.name;
}

/**
* Getter for store
* @return
*/
public String getStore(){
return this.store;
}
}

该错误发生在 MainActivity.java 的 Method redraw() 中的第 29 行。第 28-29 行状态:

TextView nameView = (TextView)findViewById(R.id.nameView);
nameView.setText(this.model.getName());

任何解决错误的帮助将不胜感激!谢谢!

最佳答案

您的 nameviewnull 因为您在设置 setContentView() 之前尝试引用 Textview

试试这个

放置此

 this.model = new ClipboardModel();
System.out.println(this.model.getName());
this.model.addObserver(this);

setContentView(R.layout.activity_main);之后

关于java - Android奇怪的ComponentInfo NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16433050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com