내 앱은 사용자가 휴대 전화를 길게 사용하는 것을 멈출 때까지 계속 실행되며 앱을 잠금 해제 할 때 화면이 잠길 때까지 멈 춥니 다. 이유는 무엇인지 알 수 없습니다. 여기에 오류 :화면 잠금 해제시 오류 발생
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();
}
}
}
붙여 넣은 logcat에서 Activity onCreate를 실행하기 전에 예외가 발생하는 것처럼 보입니다. 따라서 LazyAdapter는 Activity에 대해 null 값을 얻습니다. 라이프 사이클 이벤트가 순서대로 실행되는지 확인하고 활동이 제대로 작성되기 전에 어댑터를 인스턴스화하려고 시도하지 않아야합니다. –
"당신의 라이프 사이클 이벤트가 순서대로 실행되는지 확인하십시오."라고 말할 때 당신은 무엇을 의미합니까? 지금은 FragmentActivity와 단편을 사용하고 있습니다. 코드를 가지고있는 유일한 라이프 사이클 메소드는 onCreate입니다. 내가 그들을 구현하지 않으면 나를 위해 처리되는 라이프 사이클 메소드를 Arnt 했습니까? – ChuckKelly
필자는이를 명확하게 말하지 않았습니다. 기본적으로 라이프 사이클의 적시에 LazyAdapter를 인스턴스화해야합니다. –