2014-09-07 4 views
0

목록에서 항목을 선택하면 내 앱이 계속 충돌합니다. 나는이 문제와 관련하여 이전에 묻는 질문에서 구할 수있는 모든 것을 문자 그대로 시도했다. 문제가 의도와 상황과 관련이 있음을 알고 있습니다. 나는 이것이 왜 효과가 없는지를 알아낼 수 없다. 일부 도와주세요BaseAdapter 유형 클래스에서 활동 시작

package com.example.f4f; 


import java.util.ArrayList; 



import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Color; 
import android.net.Uri; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

public class RecipesAdapter extends BaseAdapter implements OnClickListener{ 

private Context context; 
private MainActivity activity; 
private LayoutInflater layoutInflater; 
private ArrayList<Recipes> recipes; 

public RecipesAdapter(Context context){ 
    this.context = context; 
} 

public RecipesAdapter (MainActivity a, LayoutInflater l, ArrayList<Recipes> data) 
{ 
    this.activity = a; 
    this.layoutInflater = l; 
    this.recipes = data; 
} 

@Override 
public int getCount(){ 
    return this.recipes.size(); 
} 

@Override 
public boolean areAllItemsEnabled() 
{ 
    return true; 
} 

@Override 
public Object getItem(int arg0){ 
    return null; 
} 

@Override 
public long getItemId(int pos) { 
    return pos; 
} 

@Override 
public View getView(int pos, View convertView, ViewGroup parent) { 
    MyViewHolder holder; 
    if (convertView == null) { 
     convertView = layoutInflater.inflate (R.layout.list_items, parent, false); 

     View myView = (View) convertView.findViewById(R.id.listitem); 

     if(pos % 2 == 0){ 
      myView.setBackgroundColor(Color.parseColor("#d3d3d3")); 
     } 
     holder = new MyViewHolder(); 
     holder.recipeName = (TextView) convertView.findViewById(R.id.textView1); 
     holder.rating = (TextView) convertView.findViewById(R.id.textView2); 
     //holder.storyDesp = (TextView) convertView.findViewById(R.id.textView3); 
     convertView.setTag(holder); 
    } 
    else { 
     holder = (MyViewHolder) convertView.getTag(); 
    } 

    convertView.setOnClickListener(this); 

    Recipes recipe = recipes.get(pos); 
    holder.recipe = recipe; 
    holder.recipeName.setText(recipe.getrecipeName()); 
    holder.rating.setText(recipe.getRating()); 
    //holder.storyDesp.setText(news.getDesp()); 

    return convertView; 
} 

@Override 
public void onClick(View v) { 
    MyViewHolder holder = (MyViewHolder) v.getTag(); 
    if (v instanceof View) { 
     //String selectedrecipe = holder.recipe.getID(); 
     //String selectedrecipeurl = "http://www.yummly.com/recipe/external/"+selectedrecipe; 
     //Uri uri = Uri.parse("http://www.yummly.com/recipe/external/"+selectedrecipe); 
     Intent intent = new Intent(this.context, SelectedRecipeWebView.class); 
     //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 
    } 

} 
public static class MyViewHolder { 
    public TextView recipeName, rating; 
    public Recipes recipe; 
} 


} 

1월 9일부터 8일까지 : 10 : 05.933 : D/dalvikvm (3346) : GC_FOR_ALLOC는 21K 해제, 3 % 무료 3931K/4028K는 총 2ms의, 2ms의 1월 9일에서 8일까지 일시 중지 : 10 : 05.933 : D/dalvikvm (3346) : GC_FOR_ALLOC 5K, 3 % 무료 4147K/4252K, 일시 중지 된 2ms, 총 2ms 09-08 01 : 10 : 05.937 : I/dalvikvm-heap (3346) (2546932 바이트 할당의 경우 6.537MB) 09-08 01 : 10 : 05.941 : D/dalvikvm (3346) : GC_FOR_ALLOC이 해제 됨 < 1K, 2 % 무료 6624K/6732K, 일시 중지 된 3ms, 총 3ms 09-08 01 : 10 : 06.001 : W/EGL_genymotion (3346) : eglSurfaceAttrib 구현되지 않았습니다. 09-08 01 : 10 : 07.153 : D/AndroidRunt img (3346) : VM 종료 09-08 01 : 10 : 07.153 : dalvikvm (3346) : threadid = 1 : catch되지 않은 예외 (그룹 = 0xa4d28b20)로 스레드가 종료 됨 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : 중요 예외 : 기본 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : 프로세스 : com.example.f4f, PID : 3346 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.content.ActivityNotFoundException : 명시 적 활동 클래스를 찾을 수 없습니다. {com.example.f4f/com.example.f4f.SelectedRecipeWebView}; AndroidManifest.xml에서이 활동을 선언하셨습니까? 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:1628) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : at android.app.Instrumentation.execStartActivity (Instrumentation.java:1424) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.app.Activity.startActivityForResult (Activity.java:3424) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.app.Activity.startActivityForResult (Activity.java:3385) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.app. Activity.startActivity (Activity.java:3627) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.app.Activity.startActivity (Activity.java:3595) 09-08 01:10 : 07.153 : E/AndroidRuntime (3346) : at com.example.f4f.RecipesAdapter.onClick (RecipesAda pter.java:99) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.view.View.performClick (View.java:4438) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.view.View $ PerformClick.run (View.java:18422) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.os.Handler.handleCallback (Handler. java : 733) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.os.Handler.dispatchMessage (Handler.java:95) 09-08 01 : 10 : 07.153 : E/AndroidRuntime 3346) : android.os.Looper.loop (Looper.java:136) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : android.app.ActivityThread.main (ActivityThread.java:5017) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : java.lang.reflect.Method.invokeNative (기본 메소드) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (334 6) : java.lang.reflect.Method.invoke (Method.java:515) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller. 실행 (ZygoteInit.java:779) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:595) 09-08 01 : 10 : 07.153 : E/AndroidRuntime (3346) : dalvik.system.NativeStart.main (네이티브 메소드) 09-08 01 : 10 : 09.529 : D/dalvikvm (3388) : 늦게 사용할 수있는 CheckJNI 09-08 01 : 10 : 09.585 : D/dalvikvm (3388) : GC_FOR_ALLOC은 37K, 3 % 무료 3582K/3692K, 2ms 일시 중지, 총 2ms 09-08 01 : 10 : 09.621 : D/libEGL (3388) :/system/lib/egl/libEGL_genymotion.so 09-08 01:10:09.621 : D/(3388) : HostConnection :: get() 새 호스트 연결이 설정 됨 0xb8e43568, tid 3388 09-08 01 : 10 : 09.629 : D/libEGL (3388) : loaded /system/lib/egl/libGLESv1_CM_genymotion.so 09-08 01 : 10 : 09.629 : D/libEGL (3388) :로드 됨 /system/lib/egl/libGLESv2_genymotion.so 09-08 01 : 10 : 09.653 : W/EGL_genymotion (3388) : eglSurfaceAttrib이 구현되지 않았습니다. 09 -08 01 : 10 : 09.653 : E/OpenGLRenderer (3388) : GradienCache에서 MAX_TEXTURE_SIZE 받기 09-08 01 : 10 : 09.653 : E/OpenGLRenderer (3388) : MAX_TEXTURE_SIZE : 16384 09-08 01 : 10 : 09.661 : E/OpenGLRenderer (3388) : Caches :: initConstraints()에서 MAX_TEXTURE_SIZE 얻기 09-08 01 : 10 : 09.661 : E/OpenGLRenderer (3388) : MAX_TEXTURE_SIZE : 16384 09-08 01 : 10 : 09.661 : D/OpenGLRenderer) : 디버그 모드 사용 0

+0

누구든지 해결하도록 도와 줄 수 있습니까? 나는 컨텍스트 컨텍스트를 추가하려고 : 공용 RecipesAdapter (MainActivity a, LayoutInflater l, ArrayList 데이터) { this.activity = a; this.layoutInflater = l; this.recipes = data; } – yellowmonkey

답변

1

RecipesAdapter (컨텍스트 컨텍스트) 내에서만 컨텍스트를 초기화했습니다. RecipesAdapter 인스턴스를 생성하는 동안이 생성자를 사용하지 않는 경우 컨텍스트는 참조 될 때 null 값을 갖습니다. 이 값을 초기화해야합니다.

이 클래스의 외형에서 다른 생성자를 사용한 것처럼 보입니다. 귀하의 layoutInflater가 설정되어 있고 분명히 그것에 문제가 없기 때문에 나는 이것을 추측하고 있습니다.

편집 : 현재 컨텍스트의 인스턴스를 전달하려면 RecipesAdapter (컨텍스트 컨텍스트, LayoutInflater l, ArrayList 데이터)로 생성자의 활동 필드를 바꿀 수 있습니다. 나는 이것이 (당신이 당신의 MainActivity 필드를 어디에도 사용하지 않는 것 때문에) 이것이 행해지는 정상적인 방식이기 때문에 이것을 말하고있다.

+0

컨텍스트 값을 초기화하는 방법 – yellowmonkey

+0

편집 된 답변을 확인하고 문제가 해결되는지 확인할 수 있습니까? – ucsunil

+0

내 MainActivity.java 클래스의 RecipesAdapter 생성자를 호출하여 컨텍스트 컨텍스트로 대체 할 수 있다고 생각하지 않습니다. – yellowmonkey