2015-01-15 12 views
0

내 활동을 파편에 적용하는 데 문제가있었습니다. 나는 이것을하는 방법에 대한 몇 가지 방법을 찾았지만 심지어 혼란 스럽다.안드로이드 - 코드를 변환하는 방법 활동 코드 조각?

저는 많은 코드가 있습니다. 네가 나를 도울 수 있기를 바랍니다.

내가 필요한 것을 보여 주지만 단추의 동작을 실행할 때 다음과 같은 오류가 발생합니다.

E/AndroidRuntime﹕ FATAL EXCEPTION: main 
java.lang.NullPointerException 
     at ..TaskFragment.onActivityCreated(TaskFragment.java:29) 
     at ..TaskFragment.onCreateView(TaskFragment.java:37) 

활동 클래스는 .. 그것은

public class TaskActivity extends Activity { 


TareaAdapter adapter; 
ListView lvTask; 
ArrayList<Task> listTask; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_tareas); 
    lvTask =(ListView)findViewById(R.id.lvTareas); 
    lvTask.setDividerHeight(1); 
    listTask =new ArrayList<Task>(); 
} 

@Override 
protected void onResume() 
{ 
    if(listTask.size()==0){ 
     populateList(); 
    } 
    super.onResume(); 
} 

public Task getTask(int level, int haschild){ 
    Task task =new Task(); 
    task.nombre ="Nombre Tarea"; 
    task.isAbierto =false; 
    task.nivel =level; 
    task.tieneHijo = haschild; 
    return task; 
} 
public void populateList() 
{ 
    try 
    { 
     for(int i=0;i<2;i++){ 
      listTask.add(getTask(0, 1)); 
     } 
     adapter = new TareaAdapter(TaskActivity.this, listTask); 
     lvTask.setAdapter(adapter); 
    } 
    catch (Exception e) 
    { 

    } 
} 
public void CellButtonClick(View v){ 
    try{ 
     Button b=(Button)v; 
     int index; 
     index=(Integer) b.getTag(); 

     if(b.getText().toString().equals("+")){ 
      b.setText("-"); 
      Task temp[]=new Task[2]; 
      int PLevel= listTask.get(index).nivel +1; 
      for(int i=0;i<2;i++){ 
       temp[i]= getTask(PLevel, 1); 
      } 
      listTask.get(index).isAbierto =true; 
      if(temp!=null){ 
       int addindex=index+1; 
       for(int i=0;i<temp.length;i++){ 
        listTask.add(addindex, temp[i]); 
        addindex++; 
       } 
      } 
      temp=null; 
     } 
     else{ 
      b.setText("+"); 
      listTask.get(index).isAbierto =false; 
      int removeindex=index+1; 
      for(int i=0;i<2;i++){ 
       if(listTask.get(removeindex).isAbierto){ 
        removeChilds(removeindex); 
       } 
       listTask.remove(removeindex); 
      } 
     } 
     adapter.notifyDataSetChanged(); 
    } 
    catch(Exception e){ 
     adapter.notifyDataSetChanged(); 

    } 
} 
public void removeChilds(int index){ 
    try { 
     int removeindex=index+1; 
     for(int i=0;i<2;i++){ 
      if(listTask.get(removeindex).isAbierto){ 
       removeChilds(removeindex); 
      } 
      listTask.remove(removeindex); 
     } 
    } catch (Exception e) { 
     // TODO: handle exception 

    } 
} 

조각 클래스는 .. 응용 프로그램이 onCreateView에서

TaskFragment이 조각을 확장

공용 클래스 {

TareaAdapter adapter; 
ListView lvTask; 
ArrayList<Task> listTask; 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    lvTask =(ListView) getView().findViewById(R.id.lvTareas); 
    lvTask.setDividerHeight(1); 
    listTask =new ArrayList<Task>(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    View viewRoot = inflater.inflate(R.layout.fragment_tareas, container, false); 
    Button btnExpandir = (Button) viewRoot.findViewById(R.id.btnExpandirTarea); 
    btnExpandir.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      CellButtonClick(v); 
     } 
    }); 
    return viewRoot; 
} 

@Override 
public void onResume() 
{ 
    if(listTask.size()==0){ 
     populateList(); 
    } 
    super.onResume(); 
} 

public Task getTask(int level, int haschild){ 
    Task task =new Task(); 
    task.nombre ="Nombre Tarea"; 
    task.isAbierto =false; 
    task.nivel =level; 
    task.tieneHijo = haschild; 
    return task; 
} 
public void populateList() 
{ 
    try 
    { 
     for(int i=0;i<2;i++){ 
      listTask.add(getTask(0, 1)); 
     } 
     adapter = new TareaAdapter(getActivity(), listTask); 
     lvTask.setAdapter(adapter); 
    } 
    catch (Exception e) 
    { 

    } 
} 
public void CellButtonClick(View v){ 
    try{ 
     Button b=(Button)v; 
     int index; 
     index=(Integer) b.getTag(); 

     if(b.getText().toString().equals("+")){ 
      b.setText("-"); 
      Task temp[]=new Task[2]; 
      int PLevel= listTask.get(index).nivel +1; 
      for(int i=0;i<2;i++){ 
       temp[i]= getTask(PLevel, 1); 
      } 
      listTask.get(index).isAbierto =true; 
      if(temp!=null){ 
       int addindex=index+1; 
       for(int i=0;i<temp.length;i++){ 
        listTask.add(addindex, temp[i]); 
        addindex++; 
       } 
      } 
      temp=null; 
     } 
     else{ 
      b.setText("+"); 
      listTask.get(index).isAbierto =false; 
      int removeindex=index+1; 
      for(int i=0;i<2;i++){ 
       if(listTask.get(removeindex).isAbierto){ 
        removeChilds(removeindex); 
       } 
       listTask.remove(removeindex); 
      } 
     } 
     adapter.notifyDataSetChanged(); 
    } 
    catch(Exception e){ 
     adapter.notifyDataSetChanged(); 

    } 
} 
public void removeChilds(int index){ 
    try { 
     int removeindex=index+1; 
     for(int i=0;i<2;i++){ 
      if(listTask.get(removeindex).isAbierto){ 
       removeChilds(removeindex); 
      } 
      listTask.remove(removeindex); 
     } 
    } catch (Exception e) { 
     // TODO: handle exception 

    } 
} 

답변

0

넣어이 세 줄을 충돌 작동 (해당하는 줄은에서 제거하십시오. 10)

lvTask =(ListView) viewRoot.findViewById(R.id.lvTareas); 
lvTask.setDividerHeight(1); 
listTask =new ArrayList<Task>(); 
+0

답변을 주셔서 감사합니다!. 내가 3 줄을 onCreateView에 넣으면 응용 프로그램이 충돌합니다. 하지만, 내가 가지고있는 것처럼, 조각이 표시되고 클릭하여 충돌합니다. – Jperezoso

+0

새 충돌에 대한 로그 고양이 게시. –

+0

아무런 문제가 없다면 나는 틀 렸습니다. 하지만 정보를 클릭하여 표시 할 수는 없습니다. 나는 응용 프로그램을 표시이 오류 'E/AndroidRuntime 실행하면 .... 크리에이터의 onclick 핸들러의 활성 클래스의 메소드 CellButtonClick (보기)를 찾을 수 없습니다 : 치명적인 예외 : 주요 java.lang.IllegalStateException를 id 'btnExpandirTarea'가있는 android.widget.Button 클래스를 android.view.View에서 $ 1.onClick (View.java:3026) android.view.View.performClick (View.java:3480)' – Jperezoso