2015-01-15 3 views
0

У меня были проблемы с запуском моих действий на фрагменты. Я искал несколько способов, как это сделать, но даже в этом я смущен.Android - Как преобразовать код Активность код Фрагмент?

Я знаю, что много кода. Я надеюсь, что вы можете мне помочь.

Показывает, что мне нужно, но при выполнении действия кнопки он дает следующую ошибку.

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 

    } 
} 

класса Fragment .. приложение падает

общественного класса 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

Помещенный эти три строки в onCreateView (и удалите соответствующие строки в onActivityCreated)

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

спасибо за ответ!. Когда я вставил эти три строки в onCreateView, приложение выйдет из строя. Но, как и у меня, фрагмент показан и сбой, нажав – Jperezoso

+0

Опубликуйте свой лог-кошку для нового сбоя. –

+0

Я был неправ, теперь, если у него нет проблем. Но я не могу щелкнуть и отобразить информацию. При запуске приложение отображает эту ошибку 'E/AndroidRuntime: к неустранимым: главный java.lang.IllegalStateException: Не удалось найти метод CellButtonClick (View) в классе активности .... Inicio для обработчика OnClick на view class android.widget.Button с идентификатором 'btnExpandirTarea' на android.view.View $ 1.onClick (View.java:3026) на android.view.View.performClick (View.java:3480) ' – Jperezoso

Смежные вопросы