Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法启动活动组件信息;尝试创建启动屏幕_Java_Android_Nullpointerexception_Splash Screen - Fatal编程技术网

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

我最近在我的Android应用程序中添加了一个闪屏来屏蔽JSON文件的加载,但是我的应用程序在完成解析后崩溃了。在找到有问题的代码段之前,我已经注释掉并取消注释掉了代码,但我不确定为什么它不起作用

如果我从这个代码段注释掉for循环,代码就可以工作

从MagazinePagesActivity.java:

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;
}
}