Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 为什么在我旋转手机时会调用onActivityCreated两次?_Android_Android Layout_Android Activity_Android Fragments - Fatal编程技术网

Android 为什么在我旋转手机时会调用onActivityCreated两次?

Android 为什么在我旋转手机时会调用onActivityCreated两次?,android,android-layout,android-activity,android-fragments,Android,Android Layout,Android Activity,Android Fragments,我有一个fragment类,它通过Activity类调用一个函数,该类在fragment中为我的自定义ListView返回一个适配器,但是看起来适配器是在事件列表完成之前返回的。所以我的自定义listview没有显示在片段中 这是我的碎片分类: package newcomer.fragment; import java.util.ArrayList; import com.fb.newcomersapp.CustomListAdapter; import com.fb.newcomersa

我有一个fragment类,它通过Activity类调用一个函数,该类在fragment中为我的自定义ListView返回一个适配器,但是看起来适配器是在事件列表完成之前返回的。所以我的自定义listview没有显示在片段中

这是我的碎片分类:

package newcomer.fragment;

import java.util.ArrayList;

import com.fb.newcomersapp.CustomListAdapter;
import com.fb.newcomersapp.Event;
import com.fb.newcomersapp.R;

import android.app.Activity;
import android.app.Fragment;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;

public class FeedFragment extends Fragment{
    private static ListView listView; 
    private static TextView textView;
    EventListListener mCallback;
    private ArrayList<Event> eventList;
    private CustomListAdapter adapter;  

public interface EventListListener{

    public String getLocal();
    public CustomListAdapter parseQueryEvents();
    public CustomListAdapter adaptEventList();
    public void openEvent(int position);
    public ArrayList<Event> getEventList();


}



/* (non-Javadoc)
 * @see android.app.Fragment#onActivityCreated(android.os.Bundle)
 */
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);
    listView = (ListView) getView().findViewById(R.id.event_list_view);
    adapter = mCallback.parseQueryEvents();
    Log.d("FeedFragment", "Adapter já foi chamado");
    adapter.notifyDataSetChanged();
    listView.setAdapter(adapter);


    listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            mCallback.openEvent(position);

        }
    });
}

/* (non-Javadoc)
 * @see android.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
 */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    Log.d("FeedFragment", "onCreateView");
    View view = inflater.inflate(R.layout.fragment_feed, container, false);
    textView = (TextView) view.findViewById(R.id.tv_header);
    textView.setText(mCallback.getLocal()); 
    return view;
}

/* (non-Javadoc)
 * @see android.app.Fragment#onAttach(android.app.Activity)
 */
@Override
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);

    // This makes sure that the container activity has implemented
    // the callback interface. If not, it throws an exception
    try {
        mCallback = (EventListListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString()
                + " must implement EventListListener");
        }
    }
}
package newcommer.fragment;
导入java.util.ArrayList;
导入com.fb.newcomersapp.CustomListAdapter;
导入com.fb.newcomersapp.Event;
导入com.fb.newcomersapp.R;
导入android.app.Activity;
导入android.app.Fragment;
导入android.app.ProgressDialog;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ListView;
导入android.widget.TextView;
公共类FeedFragment扩展了FeedFragment{
私有静态ListView ListView;
私有静态文本视图文本视图;
事件列表侦听器mCallback;
私有ArrayList事件列表;
专用自定义列表适配器;
公共接口EventListListener{
公共字符串getLocal();
公共CustomListAdapter parseQueryEvents();
公共CustomListAdapter AdapterEventList();
公共开孔(内部位置);
公共ArrayList getEventList();
}
/*(非Javadoc)
*@see android.app.Fragment#onActivityCreated(android.os.Bundle)
*/
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onActivityCreated(savedInstanceState);
listView=(listView)getView().findViewById(R.id.event\u list\u view);
adapter=mCallback.parseQueryEvents();
Log.d(“FeedFragment”,“Adapter jáfoi chamado”);
adapter.notifyDataSetChanged();
setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//TODO自动生成的方法存根
mCallback.openEvent(位置);
}
});
}
/*(非Javadoc)
*@see android.app.Fragment#onCreateView(android.view.LayoutInflater、android.view.ViewGroup、android.os.Bundle)
*/
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//TODO自动生成的方法存根
Log.d(“FeedFragment”、“onCreateView”);
视图=充气机。充气(R.layout.fragment\u feed,container,false);
textView=(textView)view.findViewById(R.id.tv_头);
setText(mCallback.getLocal());
返回视图;
}
/*(非Javadoc)
*@see android.app.Fragment#onAttach(android.app.Activity)
*/
@凌驾
公共事务主任(活动){
//TODO自动生成的方法存根
超级转速计(活动);
//这确保容器活动已实现
//回调接口。如果不是,则抛出异常
试一试{
mCallback=(EventListListener)活动;
}catch(ClassCastException e){
抛出新的ClassCastException(activity.toString()
+“必须实现EventListListener”);
}
}
}
调用的函数:

public synchronized CustomListAdapter parseQueryEvents () {
    eventList = new ArrayList<Event>();
    ParseQuery<ParseObject> query = ParseQuery.getQuery("Event");
    query.orderByAscending("startDate") ;
    query.whereGreaterThanOrEqualTo("endDate", new Date()) ;
    query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> parseEventList, ParseException e) {
            if (e == null) {
                ParseObject temp ;
                Iterator<ParseObject> i = parseEventList.iterator() ;
                while(i.hasNext()) {
                    temp = i.next();
                    eventList.add(new Event(temp)) ;
                }

                Log.d("FeedActivity", "Eventos: "+eventList.size());
            } else {
                Log.d("FeedActivity", e.getMessage());
            }
        }
    });
    return adaptEventList();
}

public synchronized CustomListAdapter adaptEventList() {
    CustomListAdapter adapter = new CustomListAdapter(this, eventList);
    Log.d("FeedActivity", "Adapter Criado");
    return adapter;

}
public synchronized CustomListAdapter parseQueryEvents(){
eventList=新的ArrayList();
ParseQuery=ParseQuery.getQuery(“事件”);
query.orderByAscending(“startDate”);
query.whereGreaterThanOrEqualTo(“endDate”,new Date());
findInBackground(新的FindCallback(){
public void done(List parseEventList,ParseException e){
如果(e==null){
分析对象温度;
迭代器i=parseEventList.Iterator();
while(i.hasNext()){
temp=i.next();
添加(新事件(临时));
}
Log.d(“FeedActivity”、“Eventos:+eventList.size());
}否则{
Log.d(“FeedActivity”,e.getMessage());
}
}
});
返回adaptEventList();
}
公共同步CustomListAdapter AdapterEventList(){
CustomListAdapter=新的CustomListAdapter(此,事件列表);
日志d(“FeedActivity”、“Adapter Criado”);
返回适配器;
}
日志:

02-05 09:43:17.065:D/FeedFragment(27880):onCreateView
02-05 09:43:17.113:D/网络(27880):网络
02-05 09:43:17.122:D/网络(27880):网络
02-05 09:43:17.772:D/FeedActivity(27880):适配器Criado
02-05 09:43:17.772:D/FeedFragment(27880):适配器jáfoi chamado
02-05 09:43:17.790:I/编舞(27880):跳过了46帧!应用程序可能在其主线程上做了太多工作。
02-05 09:43:17.832:I/Adreno EGL(27880)::EGL 1.4高通构建:AU_LINUX_ANDROID_LNX.LA.3.5.1_RB1.04.04.02.048.018_msm8610_LNX.LA.3.5.1_RB1_发布
02-05 09:43:17.832:I/Adreno EGL(27880):OpenGL ES着色器编译器版本:E031.24.00.08
02-05 09:43:17.832:I/Adreno EGL(27880):建造日期:2014年7月3日星期五
02-05 09:43:17.832:I/Adreno EGL(27880):当地分行:
02-05 09:43:17.832:I/Adreno EGL(27880):远程分支:quic/LNX.LA.3.5.1_RB1.1
02-05 09:43:17.832:I/Adreno EGL(27880):局部贴片:无
02-05 09:43:17.832:I/Adreno EGL(27880):重构分支:AU_LINUX_ANDROID_LNX.LA.3.5.1_RB1.04.04.02.048.018+f2fd134+NOTHING
02-05 09:43:17.858:D/OpenGLRenderer(27880):启用调试模式0
02-05 09:43:18.377:D/反馈活动(27880):事件:3
02-05 09:43:37.652:D/FeedFragment(27880):onCreateView
02-05 09:43:37.708:D/网络(27880):网络
02-05 09:43:37.721:D/网络(27880):网络
02-05 09:43:38.398:D/FeedActivity(27880):适配器Criado
02-05 09:43:38.398:D/FeedFragment(27880):适配器jáfoi chamado
02-05 09:43:38.399:D/FeedFragment(27880):onCreateView
02-05 09:43:38.428:D/网络(27880):网络
02-05 09:43:38.431:D/网络(27880):网络
02-05 09:43:39.133:D/FeedActivity(27880):适配器Criado
02-
02-05 09:43:17.065: D/FeedFragment(27880): onCreateView
02-05 09:43:17.113: D/Network(27880): Network
02-05 09:43:17.122: D/Network(27880): Network
02-05 09:43:17.772: D/FeedActivity(27880): Adapter Criado
02-05 09:43:17.772: D/FeedFragment(27880): Adapter já foi chamado
02-05 09:43:17.790: I/Choreographer(27880): Skipped 46 frames!  The application may be doing too much work on its main thread.
02-05 09:43:17.832: I/Adreno-EGL(27880): <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LNX.LA.3.5.1_RB1.04.04.02.048.018_msm8610_LNX.LA.3.5.1_RB1_ release_AU ()
02-05 09:43:17.832: I/Adreno-EGL(27880): OpenGL ES Shader Compiler Version: E031.24.00.08
02-05 09:43:17.832: I/Adreno-EGL(27880): Build Date: 03/07/14 Fri
02-05 09:43:17.832: I/Adreno-EGL(27880): Local Branch: 
02-05 09:43:17.832: I/Adreno-EGL(27880): Remote Branch: quic/LNX.LA.3.5.1_RB1.1
02-05 09:43:17.832: I/Adreno-EGL(27880): Local Patches: NONE
02-05 09:43:17.832: I/Adreno-EGL(27880): Reconstruct Branch: AU_LINUX_ANDROID_LNX.LA.3.5.1_RB1.04.04.02.048.018 + f2fd134 +  NOTHING
02-05 09:43:17.858: D/OpenGLRenderer(27880): Enabling debug mode 0
02-05 09:43:18.377: D/FeedActivity(27880): Eventos: 3
02-05 09:43:37.652: D/FeedFragment(27880): onCreateView
02-05 09:43:37.708: D/Network(27880): Network
02-05 09:43:37.721: D/Network(27880): Network
02-05 09:43:38.398: D/FeedActivity(27880): Adapter Criado
02-05 09:43:38.398: D/FeedFragment(27880): Adapter já foi chamado
02-05 09:43:38.399: D/FeedFragment(27880): onCreateView
02-05 09:43:38.428: D/Network(27880): Network
02-05 09:43:38.431: D/Network(27880): Network
02-05 09:43:39.133: D/FeedActivity(27880): Adapter Criado
02-05 09:43:39.133: D/FeedFragment(27880): Adapter já foi chamado
02-05 09:43:39.146: I/Choreographer(27880): Skipped 95 frames!  The application may be doing too much work on its main thread.
02-05 09:43:39.190: W/View(27880): requestLayout() improperly called by android.widget.ListView{41d65188 IFED.VC. ......ID -360,0-0,442 #7f050041app:id/list_slidermenu} during layout: running second layout pass
02-05 09:43:39.193: D/FeedActivity(27880): Eventos: 3
02-05 09:43:39.559: D/FeedActivity(27880): Eventos: 6