Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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
Android 尝试使用Parse.com中的数据填充listview时,Java IO异常断开管道_Android_Listview_Parse Platform_Broken Pipe - Fatal编程技术网

Android 尝试使用Parse.com中的数据填充listview时,Java IO异常断开管道

Android 尝试使用Parse.com中的数据填充listview时,Java IO异常断开管道,android,listview,parse-platform,broken-pipe,Android,Listview,Parse Platform,Broken Pipe,我正在创建一个Android应用程序,它运行三个片段,每个片段中包含一个listview。目前,我正在尝试使用Parse.com上创建的表中的内容填充其中一个ListView。我遵循本教程:并将其应用于我的片段中。但问题是,每次我运行应用程序时,它都会加载数据约3秒钟,然后突然崩溃,并导致以下错误: ddmlib: Broken pipe java.io.IOException: Broken pipe at sun.nio.ch.FileDispatcher.write0(Native

我正在创建一个Android应用程序,它运行三个片段,每个片段中包含一个listview。目前,我正在尝试使用Parse.com上创建的表中的内容填充其中一个ListView。我遵循本教程:并将其应用于我的片段中。但问题是,每次我运行应用程序时,它都会加载数据约3秒钟,然后突然崩溃,并导致以下错误:

ddmlib: Broken pipe
java.io.IOException: Broken pipe
    at sun.nio.ch.FileDispatcher.write0(Native Method)
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:69)
    at sun.nio.ch.IOUtil.write(IOUtil.java:40)
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:336)
    at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
    at com.android.ddmlib.Client.sendAndConsume(Client.java:642)
    at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:348)
    at com.android.ddmlib.Client.requestAllocationStatus(Client.java:488)
    at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:835)
    at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:803)
    at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:763)
    at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:652)
    at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:44)
    at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:580)
我完全不知道我为什么会收到这个错误。下面是我试图从中填充listview的片段中的代码。我还为listview使用了一个自定义适配器,但我使用的是我的另一个项目中的同一个适配器,因此我确信它工作正常。要获取数据,我调用new RemoteDataTask().execute();在onCreateView中。我认为这就是问题所在。我还确信我的解析数据库中的所有表名都是正确的

public class fraternitiesFragment extends Fragment {

    private SwipeRefreshLayout swipeLayoutFraternities;
    private ListView fratList;
    List<ParseObject> objList;
    ProgressDialog mProgressDialog;
    fraternitiesAdapter fratAdapter;
    private List<Frat> fraternitiesList = null;
    public fraternitiesFragment()
    {

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.frat_fragment, null);


        // Retrieve the SwipeRefreshLayout and ListView instances
        swipeLayoutFraternities = (SwipeRefreshLayout)view.findViewById(R.id.swipe_refresh_fraternities);
        swipeLayoutFraternities.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                new Handler().postDelayed(new Runnable() {
                    @Override public void run() {
                        swipeLayoutFraternities.setRefreshing(false);
                    }
                }, 3000);
            }
        });
        // Set the color scheme of the SwipeRefreshLayout by providing 4 color resource ids
        swipeLayoutFraternities.setColorScheme(
                R.color.tech_blue,
                R.color.tech_gold,
                R.color.tech_blue,
                R.color.tech_gold);

        new RemoteDataTask().execute();
        return view;

    }


    private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            mProgressDialog = new ProgressDialog(getActivity());
            mProgressDialog.setTitle("Loading Fraternities");
            mProgressDialog.setMessage("Loading...");
            mProgressDialog.setIndeterminate(false);
            mProgressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            fraternitiesList = new ArrayList<Frat>();
            try{

                ParseQuery<ParseObject> fraternitiesQuery = new ParseQuery<ParseObject>("Fraternities");
                Log.i("Query", " Created");
                fraternitiesQuery.orderByAscending("fratName");
                objList = fraternitiesQuery.find();
                for(ParseObject Fraternity : objList)
                {
                    Frat fraternity = new Frat();
                    fraternity.setFratName((String) Fraternity.get("fratName"));
                    fraternity.setVoteCount((Integer) Fraternity.get("VoteCount"));
                    fraternitiesList.add(fraternity);
                }

            } catch (ParseException e)
            {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result)
        {
            fratList = (ListView)getActivity().findViewById(R.id.frat_list);
            fratAdapter = new fraternitiesAdapter(getActivity(), fraternitiesList);
            Log.d("Adapter Created", "Created");
            mProgressDialog.dismiss();
            fratList.setAdapter(fratAdapter);

        }
    }

}
公共类兄弟会片段扩展片段{
私人游泳设施;
私有列表视图列表;
列表对象列表;
进程对话框;
联谊会;
私有列表兄弟会列表=空;
公共兄弟会碎片()
{
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.frat_片段,空);
//检索SwipeRefreshLayout和ListView实例
SwipeLayoutRaterNities=(SwipeRefreshLayout)view.findViewById(R.id.swipe\u refresh\u Broternies);
SwipeLayoutRaterNities.setOnRefreshListener(新的SwipeRefreshLayout.OnRefreshListener(){
@凌驾
公共void onRefresh(){
new Handler().postDelayed(new Runnable()){
@重写公共无效运行(){
swipelayoutraternities.setRefreshing(false);
}
}, 3000);
}
});
//通过提供4个颜色资源ID设置SwipeRefreshLayout的颜色方案
SwipeLayoutRateRNities.setColorScheme(
R.color.tech_蓝色,
R.color.tech_金色,
R.color.tech_蓝色,
R.color.tech_gold);
新建RemoteDataTask().execute();
返回视图;
}
私有类RemoteDataTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
mProgressDialog=newprogressdialog(getActivity());
setTitle(“加载兄弟会”);
设置消息(“加载…”);
mProgressDialog.setUndeterminate(false);
mProgressDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…参数){
兄弟会列表=新的ArrayList();
试一试{
ParseQuery兄弟会查询=新建ParseQuery(“兄弟会”);
Log.i(“查询”、“创建”);
fraterniesquery.orderByAscending(“fratName”);
objList=fraterniesquery.find();
for(ParseObject兄弟会:objList)
{
兄弟会=新兄弟会();
setFratName((字符串)fraternity.get(“fratName”);
fraternity.setVoteCount((整数)fraternity.get(“VoteCount”));
兄弟会列表。添加(兄弟会);
}
}捕获(解析异常)
{
Log.e(“Error”,e.getMessage());
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果)
{
fratList=(ListView)getActivity().findViewById(R.id.frat_list);
FraterniesAdapter=新的兄弟会适配器(getActivity(),兄弟会列表);
Log.d(“适配器已创建”、“已创建”);
mProgressDialog.disclose();
fratList.setAdapter(fratAdapter);
}
}
}

我真的需要帮助找出是什么地方出了问题,导致了这个管道破裂的错误。非常感谢您的任何帮助或反馈

Parse已经有异步方法,请尝试以下操作

 ParseQuery<ParseObject> query = ParseQuery.getQuery("Fraternities");
        query.findInBackground(new FindCallback<ParseObject>() {
            public void done(List<ParseObject> fraternityList, ParseException e) {
                // Do your work here
            }
        });
ParseQuery=ParseQuery.getQuery(“兄弟会”);
findInBackground(新的FindCallback(){
公共作废完成(列表兄弟会列表,Parsee异常){
//你在这里工作吗
}
});

那么我应该用这段代码替换整个RemoteDataTask类,还是将其放在类中?该方法是否从表中获取所有数据并将其放入列表兄弟会列表中?您可以尝试删除查询部分并替换为该部分。如果它正在工作,请尝试通过修复Listview适配器中变量类型中的错误,用上面的代码替换实际使其工作的人,但不幸的是,现在我只返回表的第一行。上面的方法是否获取所有行?是的,绝对会获取所有行