gpt4 book ai didi

java - EditText 在 .getText() 上抛出 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 14:22:03 25 4
gpt4 key购买 nike

在我的应用程序中,我动态创建了已输入文本的 EditText。然后onCLick,ArrayList获取EditTexts中的所有文本,然后进行序列化。我现在在 for 循环中获取 EditTexts 的文本并将它们添加到 ArrayList 中。

我想我知道发生了什么,但不知道如何解决。我的理论是,我在此处创建包含其中一个 EditText 的变量时存在问题:

etIndex=(EditText)newView.findViewById(i+1000);

我的想法是,我说的 newView 有一个问题。这是膨胀 View 的名称,但问题是每次单击我再次膨胀布局时它都会被删除。如果这没有意义,请阅读下面包含的 Java 类,它将 100% 有意义。

这是我调用 .getText() 的地方以及发生 NullPointerException 的行:

listOptions.add(etIndex.getText().toString());

这是我制作 EditText 的地方:

LayoutInflater inflater = LayoutInflater.from(view.getContext());
View newView = inflater.inflate(R.layout.additem, null);
listItem = (LinearLayout)newView.findViewById(R.id.lladdItem);
listItem.setId(numOfItems);
tvItem = (TextView)newView.findViewById(R.id.tvItem);
tvItem.setText(numOfItems + ".");
etItem = (EditText)newView.findViewById(R.id.etItem);
etItem.setId(numOfItems+1000);
etItem.setHint("List Item " + numOfItems);

如果你想要的话,这是我的整个 Java 文件:

package com.frostbytedev.randomgenie;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.*;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

/**
* Created by Steven on 6/23/13.
*/
public class NewList extends Activity implements View.OnClickListener{
java.util.List<Integer> listOfET = new ArrayList<Integer>();
java.util.List<String> listOptions = new ArrayList<String>();
View newView;
LinearLayout insideScroll, listItem;
ScrollView svItems;
TextView tvItem;
EditText FileName, etItem, etItem1, etIndex;
Button Add, Remove, Save;
int numOfItems = 1, i;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newlist);
initialize();
}

private void initialize() {
FileName=(EditText)findViewById(R.id.etTitle);
Save=(Button)findViewById(R.id.bSave);
Add=(Button)findViewById(R.id.bAdd);
Remove=(Button)findViewById(R.id.bRemove);
insideScroll=(LinearLayout)findViewById(R.id.insideScroll);
etItem1=(EditText)findViewById(R.id.etItem1);
Save.setOnClickListener(this);
Add.setOnClickListener(this);
Remove.setOnClickListener(this);
}

@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.bAdd:
numOfItems += 1;
LayoutInflater inflater = LayoutInflater.from(view.getContext());
View newView = inflater.inflate(R.layout.additem, null);
listItem = (LinearLayout)newView.findViewById(R.id.lladdItem);
listItem.setId(numOfItems);
tvItem = (TextView)newView.findViewById(R.id.tvItem);
tvItem.setText(numOfItems + ".");
etItem = (EditText)newView.findViewById(R.id.etItem);
etItem.setId(numOfItems+1000);
etItem.setHint("List Item " + numOfItems);
insideScroll.addView(newView);

break;
case R.id. bRemove:
if(numOfItems==1){

} else {
View v = findViewById(numOfItems);
((LinearLayout)v.getParent()).removeView(v);
numOfItems -= 1;
}
break;

case R.id.bSave:
IndexList();
try {
SaveList();
} catch (IOException e) {
e.printStackTrace();
}
Intent OpenList = new Intent(getApplicationContext(), ListRandom.class);
OpenList.putExtra("Filename", FileName+".txt");
startActivity(OpenList);
break;
}
}

private void SaveList() throws IOException {
String filename = FileName.getText().toString()+".txt";
FileOutputStream fos;
try {
fos = openFileOutput(filename,Context.MODE_PRIVATE);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(listOptions);
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
}
private void IndexList() {
listOptions.add(etItem1.getText().toString());
for(i=1;i<numOfItems;i++){
etIndex=(EditText)newView.findViewById(i+1000);
listOptions.add(etIndex.getText().toString());
}
}

}

最佳答案

第一次创建 id numOfItems 时为 2,而不是 1,这会导致第一个 id 1002。然后在循环中,尝试获取 id 1001。在日志语句中输出所有创建的id,这将帮助您看到问题。

关于java - EditText 在 .getText() 上抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17457267/

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