Java 无法启动活动组件信息;尝试创建启动屏幕
我最近在我的Android应用程序中添加了一个闪屏来屏蔽JSON文件的加载,但是我的应用程序在完成解析后崩溃了。在找到有问题的代码段之前,我已经注释掉并取消注释掉了代码,但我不确定为什么它不起作用 如果我从这个代码段注释掉for循环,代码就可以工作 从MagazinePagesActivity.java:Java 无法启动活动组件信息;尝试创建启动屏幕,java,android,nullpointerexception,splash-screen,Java,Android,Nullpointerexception,Splash Screen,我最近在我的Android应用程序中添加了一个闪屏来屏蔽JSON文件的加载,但是我的应用程序在完成解析后崩溃了。在找到有问题的代码段之前,我已经注释掉并取消注释掉了代码,但我不确定为什么它不起作用 如果我从这个代码段注释掉for循环,代码就可以工作 从MagazinePagesActivity.java: public void loadItems() { for (Item item : SplashActivity.downloadedItems) { Post
public void loadItems() {
for (Item item : SplashActivity.downloadedItems) {
Post post = (Post) item;
for (String tag : post.tags) {
if (tag.equals(this.tag)) {
// loader.loadImage(magazine.imageURL, new
// SimpleImageLoadingListener());
Bundle bundle = new Bundle();
bundle.putString("title", post.title);
bundle.putString("article", post.article);
bundle.putString("imageURL", post.imageURL);
MagazineFragment cover = new MagazineFragment();
cover.setArguments(bundle);
coverAdapter.addNewItem(cover);
}
}
}
setContentView(vp);
}
起初,我认为这是因为SplashActivity.downloadedItems没有正确定义,但在我看来这很好:
从SplashActivity.java:
public static ArrayList<Item> downloadedItems = new ArrayList<Item>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new RetreiveJSONTask() {
protected void onPostExecute(String JSON)
{
Log.d("SplashActivity", "Beginning parsingJSON" );
downloadedItems = parseJSON ( JSON );
Log.d("SplashActivity", "Finished parsingJSON" );
Log.d("SplashActivity", "" + SplashActivity.downloadedItems.isEmpty());
Intent i = new Intent(SplashActivity.this, MagazinePagesActivity.class);
startActivity(i);
// Closes the splash screen
finish();
}
}.execute(sourceURL());
}
不确定这是否有帮助,但SplashActivity和MagazinePagesActivity分别扩展了JSonimActivity
提前感谢您的帮助!我刚刚接触安卓系统,所以请容忍我
编辑:这很奇怪,我用来检查ArrayList是否为空的debug语句返回true,但parseJSON中的另一个debug语句显示正在添加内容。我的parseJSON方法:
public ArrayList<Item> parseJSON(String jsonString) {
ArrayList<Item> magazines = new ArrayList<Item>();
JSONArray jArray;
try {
jArray = new JSONArray(jsonString);
JSONObject jObject;
JSONObject image;
String img;
String title;
String subtitle;
int commentCount;
String content;
String date;
String ID;
String slug;
JSONArray array;
String[] tags;
for (int i = 0; i < jArray.length(); i++) {
jObject = jArray.getJSONObject(i);
img = jObject.getString("tall_image_url");
if (img.equals(""))
img = jObject.getString("image_url");
if (img.equals("") && !jObject.isNull("poster_image")) {
image = jObject.getJSONObject("poster_image");
img = image.getString("name");
}
title = jObject.getString("title");
subtitle = jObject.getString("subtitle");
commentCount = jObject.getInt("comment_count");
content = jObject.getString("content_html");
date = jObject.getString("creation_date");
ID = jObject.getString("id");
slug = jObject.getString("slug");
array = jObject.getJSONArray("tags_list");
tags = new String[array.length()];
for (int j = 0; j < array.length(); j++) {
tags[j] = array.getString(j);
}
for (String tag : tags) {
if (tag.equals(this.tag))
{
Post additive = new Post(img, title, subtitle,
commentCount, content, date, ID, slug, tags);
magazines.add(additive);
Log.d("SplashActivity", additive.toString());
}
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return magazines;
}
StoryItemsActivity(MagazinePagesActivity和StoryListActivity扩展了此类;此类扩展了JSonimActivity,而SplashActivity也扩展了JSonimActivity):
package com.dailybruin.bruiframework.channels;
导入java.util.ArrayList;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入com.dailybruin.bruinframework.R;
导入com.dailybruin.bruinframework.base.BaseActivity;
导入com.dailybruin.bruinframework.base.URLBuilder;
导入android.os.Bundle;
公共抽象类StoryItemsActivity扩展了JSONItemActivity{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
公共字符串sourceURL()
{
返回URLBuilder.getPostsURL(getString(R.string.slug));
}
公共ArrayList parseJSON(字符串jsonString){
//使用预下载和解析的JSON
返回SplashActivity.downloadedItems;
}
}
检查这部分代码。第27行。这是空的,因此导致NPE
原因:java.lang.NullPointerException
10-16 19:23:12.632:E/AndroidRuntime(828):在com.dailybruin.bruinframework.channels.StoryListActivity.loadItems(StoryListActivity.java:27)
感谢您的回复!但是,当我把它注释出来时,我仍然会得到一个错误;如果你想看的话,我把它更新到了主帖子里。StoryListActivity扩展了MagazinePagesActivity也扩展的StoryItemsActivity;也许是那个班?我还用该类的代码更新了主要帖子。
public ArrayList<Item> parseJSON(String jsonString) {
ArrayList<Item> magazines = new ArrayList<Item>();
JSONArray jArray;
try {
jArray = new JSONArray(jsonString);
JSONObject jObject;
JSONObject image;
String img;
String title;
String subtitle;
int commentCount;
String content;
String date;
String ID;
String slug;
JSONArray array;
String[] tags;
for (int i = 0; i < jArray.length(); i++) {
jObject = jArray.getJSONObject(i);
img = jObject.getString("tall_image_url");
if (img.equals(""))
img = jObject.getString("image_url");
if (img.equals("") && !jObject.isNull("poster_image")) {
image = jObject.getJSONObject("poster_image");
img = image.getString("name");
}
title = jObject.getString("title");
subtitle = jObject.getString("subtitle");
commentCount = jObject.getInt("comment_count");
content = jObject.getString("content_html");
date = jObject.getString("creation_date");
ID = jObject.getString("id");
slug = jObject.getString("slug");
array = jObject.getJSONArray("tags_list");
tags = new String[array.length()];
for (int j = 0; j < array.length(); j++) {
tags[j] = array.getString(j);
}
for (String tag : tags) {
if (tag.equals(this.tag))
{
Post additive = new Post(img, title, subtitle,
commentCount, content, date, ID, slug, tags);
magazines.add(additive);
Log.d("SplashActivity", additive.toString());
}
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return magazines;
}
public void loadItems() {
(findViewById(R.id.progress_bar)).setVisibility(View.GONE);
getSupportFragmentManager().beginTransaction()
.replace(R.id.loading, new StoryListFragment()).commit();
}
package com.dailybruin.bruinframework.channels;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.dailybruin.bruinframework.R;
import com.dailybruin.bruinframework.base.BaseActivity;
import com.dailybruin.bruinframework.base.URLBuilder;
import android.os.Bundle;
public abstract class StoryItemsActivity extends JSONItemsActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public String sourceURL()
{
return URLBuilder.getPostsURL(getString(R.string.slug));
}
public ArrayList<Item> parseJSON(String jsonString) {
// Using pre-downloaded and parsed JSON
return SplashActivity.downloadedItems;
}
}