Java PostExecute上的NullPointerException
我试图在Java PostExecute上的NullPointerException,java,android,nullpointerexception,Java,Android,Nullpointerexception,我试图在TextView上显示值,但如果我想在PostExecute上填充TextView,我会得到一个NullPointerException。我已经用日志检查了列表是否为空,但它已填充 我的代码: public class DBResult extends MainActivity { //Erstellen eines JSON Parser Objekts JSONParser jParser = new JSONParser(); ArrayList<H
TextView
上显示值,但如果我想在PostExecute
上填充TextView
,我会得到一个NullPointerException
。我已经用日志检查了列表是否为空,但它已填充
我的代码:
public class DBResult extends MainActivity {
//Erstellen eines JSON Parser Objekts
JSONParser jParser = new JSONParser();
ArrayList<HashMap<String,String>> LIST = new ArrayList<>();
// url to get all products list
private static String url_dataget = "DATAGET_PHP";
// JSON Node
private static final String TAG_SUCCESS = "success";
private static final String TAG_PRODUCTS = "products";
private static final String TAG_NAME = "name";
private static final String TAG_INN = "inn";
private static final String TAG_AnalgetikaGroup= "analgetikagroup";
private static final String TAG_WHOLevel = "wholevel";
private static final String TAG_DailyDose = "dailydose";
private static final String TAG_contraindication = "contraindication";
private static final String TAG_SideEffect = "sideeffect";
private static final String TAG_GastricProtection = "gastricprotection";
// products JSONArray
JSONArray products = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Background Thread
new LoadMed().execute();
}
class LoadMed extends AsyncTask<String,String,String>{
protected String doInBackground(String...args){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url_dataget, "GET", params);
// Check your log cat for JSON reponse
Log.d("Medic: ", json.toString());
try {
// Checking for SUCCESS TAG
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// products found
// Getting Array of Products
products = json.getJSONArray(TAG_PRODUCTS);
// looping through All Products
for (int i = 0; i < products.length(); i++) {
JSONObject c = products.getJSONObject(i);
// Storing each json item in variable
String name = c.getString(TAG_NAME);
String INN = c.getString(TAG_INN);
String AnalgetikaGroup = c.getString(TAG_AnalgetikaGroup);
String WHOLevel = c.getString(TAG_WHOLevel);
String DailyDose = c.getString(TAG_DailyDose);
String contraindication = c.getString(TAG_contraindication);
String SideEffect = c.getString(TAG_SideEffect);
String GastricProtection = c.getString(TAG_GastricProtection);
HashMap<String,String> map = new HashMap<>();
map.put(TAG_NAME,name);
map.put(TAG_INN,INN);
map.put(TAG_AnalgetikaGroup,AnalgetikaGroup);
map.put(TAG_WHOLevel,WHOLevel);
map.put(TAG_DailyDose,DailyDose);
map.put(TAG_contraindication,contraindication);
map.put(TAG_SideEffect,SideEffect);
map.put(TAG_GastricProtection,GastricProtection);
Log.d("LIL",map.toString());
LIST.add(map);
}
}
}catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String file_url) {
runOnUiThread(new Runnable() {
public void run() {
Log.d("sad", LIST.toString());
TextView mednamefield = findViewById(R.id.medname);
TextView sideeffectfield = findViewById(R.id.sideeffect);
TextView medWHOfield = findViewById(R.id.wholevel);
TextView medGastricProtectionfield = findViewById(R.id.gastricprotecio);
TextView medINNfield = findViewById(R.id.INN);
TextView medDailyDosefield = findViewById(R.id.dailydose);
TextView medanalgeticafield = findViewById(R.id.analgeticagroup);
TextView contraindicationfield = findViewById(R.id.contraindication);
mednamefield.setText(LIST.get(0).get(TAG_NAME));
sideeffectfield.setText(LIST.get(1).get(TAG_SideEffect));
medWHOfield.setText((LIST.get(2).get(TAG_WHOLevel)));
medGastricProtectionfield.setText("Magenschutz empfohlen: " + LIST.get(3).get(TAG_GastricProtection));
contraindicationfield.setText(LIST.get(4).get(TAG_contraindication));
medINNfield.setText("INN: " + LIST.get(5).get(TAG_INN));
medDailyDosefield.setText(LIST.get(6).get(TAG_DailyDose));
medanalgeticafield.setText(LIST.get(7).get(TAG_AnalgetikaGroup));
}
});
}
}
注意:我已经阅读了关于stackoverflow的文章“What is a NullPointerException”和其他一些关于此主题的文章,但我仍然找不到正确的解决方案。您需要添加:setContentView(R.layout.your_xml)代码>内部onCreate
setContentView(R.layout.your_xml);
更新:
对于第二个问题,您实际上将实例map
放在LIST
不是映射的值,而是需要执行以下操作:
List<String> list = new ArrayList<Sting>(map.values());
List List=newarraylist(map.values());
您不能在setContentView方法中添加“活动”
setContentView(R.layout.layout_issue);//your layout.
您错过了setContentView()代码>在onCreate()中
一旦创建:
@Override
public void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.your_xml);
//Background Thread
new LoadMed().execute();
}
“您没有在onCreate方法中添加布局。@MichaelDodd请先阅读问题。您是否知道哪个对象是null
,为什么是null
?@Dumbo“我仍然无法解决它”不是一个很好的理由。”。OP应该指出问题所在(哪个对象是null
,等等)。如果您有不同的问题,请询问另一个问题。记得先调试你的程序。谢谢你的回答。我解决了这个问题并编辑了我的文章检查update@user9094494在这个网站上,问题不是文章。如果您有不同的问题,请问不同的问题。我不能List List=new ArrayList(map.values())
因为map
在类LoadMed
@user9094494 Memory中,它不是为了帮助单个用户,而是为了创建有用问题/答案的存储库。这样做只会把一切弄得乱七八糟,并使未来的游客感到困惑。
@Override
public void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.your_xml);
//Background Thread
new LoadMed().execute();
}