Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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 屏幕解锁时发生碰撞_Android_Listview_Android Lifecycle_Baseadapter - Fatal编程技术网

Android 屏幕解锁时发生碰撞

Android 屏幕解锁时发生碰撞,android,listview,android-lifecycle,baseadapter,Android,Listview,Android Lifecycle,Baseadapter,我的应用程序运行得很好,除了当用户停止使用手机足够长的时间以锁定屏幕时,当他们解锁手机时,应用程序崩溃,我对原因有点不知所措。以下是错误: 下面是惰性适配器: package com.buhz.helpers; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.content.Context; import android.co

我的应用程序运行得很好,除了当用户停止使用手机足够长的时间以锁定屏幕时,当他们解锁手机时,应用程序崩溃,我对原因有点不知所措。以下是错误:

下面是惰性适配器:

    package com.buhz.helpers;

import java.util.ArrayList;     
import java.util.HashMap;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import com.buhz.login.R;
import com.buhz.login.TabHostFragmentActivity;
import com.loopj.android.image.SmartImageView;



public class LazyAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 

    public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.list_row, null);

        TextView name = (TextView)vi.findViewById(R.id.name); // title
        TextView message = (TextView)vi.findViewById(R.id.message); // artist name
        TextView created = (TextView)vi.findViewById(R.id.created); // duration
        SmartImageView thumb_image = (SmartImageView) vi.findViewById(R.id.list_image);



        HashMap<String, String> update = new HashMap<String, String>();
        update = data.get(position); 

        // Setting all values in listview
        name.setText(update.get("name"));
        message.setText(update.get("message"));
        created.setText(update.get("created"));
        thumb_image.setImageUrl(update.get("thumb_img"));
        name.setOnClickListener(new myOnClickListener(position));
        thumb_image.setOnClickListener(new myOnClickListener(position));
        return vi;
    }

    public class myOnClickListener implements OnClickListener{
        private int position;
        private String clicked_uid;
        public myOnClickListener(int position){
            this.position=position;
        }
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


            HashMap<String, String> update = new HashMap<String, String>();
            update = data.get(position); 
            Log.i("Update Position:", update.toString());
            clicked_uid=update.get("uid");
            Log.d("Clicked UID:", clicked_uid+"");
            Intent i = new Intent(activity.getApplicationContext() , TabHostFragmentActivity.class);
            i.putExtra("profile_uid", clicked_uid);
            activity.startActivity(i);
            activity.finish();

        }

    }
}
package com.buhz.helpers;
导入java.util.ArrayList;
导入java.util.HashMap;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.buhz.login.R;
导入com.buhz.login.TabHostFragmentActivity;
导入com.loopj.android.image.SmartImageView;
公共类LazyAdapter扩展了BaseAdapter{
私人活动;
私有数组列表数据;
专用静态充气机=空;
公共图像加载器;
公共LazyAdapter(活动a,ArrayList d){
活动=a;
数据=d;
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
imageLoader=新的imageLoader(activity.getApplicationContext());
}
public int getCount(){
返回data.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
if(convertView==null)
vi=充气机充气(R.layout.list_行,空);
TextView name=(TextView)vi.findviewbyd(R.id.name);//title
TextView消息=(TextView)vi.findviewbyd(R.id.message);//艺术家姓名
TextView created=(TextView)vi.findViewById(R.id.created);//持续时间
SmartImageView thumb_image=(SmartImageView)vi.findViewById(R.id.list_image);
HashMap update=新的HashMap();
更新=数据。获取(位置);
//在listview中设置所有值
name.setText(update.get(“name”));
message.setText(update.get(“message”));
created.setText(update.get(“created”);
thumb_image.setImageUrl(update.get(“thumb_img”);
name.setOnClickListener(新的myOnClickListener(位置));
thumb_image.setOnClickListener(新的myOnClickListener(位置));
返回vi;
}
公共类myOnClickListener实现OnClickListener{
私人职位;
私有字符串;uid;
公共myOnClickListener(内部职位){
这个位置=位置;
}
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
HashMap update=新的HashMap();
更新=数据。获取(位置);
Log.i(“更新位置:”,Update.toString());
单击_uid=update.get(“uid”);
Log.d(“单击UID:,单击UID+”);
Intent i=新的Intent(activity.getApplicationContext(),TabHostFragmentActivity.class);
i、 putExtra(“profile\u-uid”,单击了\u-uid);
活动性、触觉性(i);
activity.finish();
}
}
}

您必须通过确保正在处理所有可能的状态来检查应用程序状态。当应用程序状态变为未处理状态(如onResume或onStart)时,就会发生此问题

本文将帮助您了解每个状态以及何时调用它

正如上面所说:

因此,我将AndroidManifest.xml更改为包含所有配置

android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize|layoutDirection"

它对我很有用。

从您粘贴的日志猫中,看起来异常是在运行“创建活动”之前抛出的。因此,您的LazyAdapter正在获取活动的空值。确保您的生命周期事件按顺序触发,并且在正确创建活动之前,您没有尝试实例化适配器。当您说“确保您的生命周期事件按顺序触发”时是什么意思…现在我使用的是FragmentActivity和fragment,到目前为止,我唯一使用的生命周期方法是onCreate。如果我还没有实现生命周期方法,那么生命周期方法不是为我处理的吗?我没有说清楚-基本上你必须确保你在生命周期中的正确时间实例化LazyAdapter。这对片段没有多大帮助,这就是问题所在。我发现由于某种原因,它的bc片段的加载速度比恢复时的activitys快,所以我的activitys上下文还没有准备好,我只是不知道该怎么办
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize|layoutDirection"