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
에서
공용 클래스 {
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
}
}
답변을 주셔서 감사합니다!. 내가 3 줄을 onCreateView에 넣으면 응용 프로그램이 충돌합니다. 하지만, 내가 가지고있는 것처럼, 조각이 표시되고 클릭하여 충돌합니다. – Jperezoso
새 충돌에 대한 로그 고양이 게시. –
아무런 문제가 없다면 나는 틀 렸습니다. 하지만 정보를 클릭하여 표시 할 수는 없습니다. 나는 응용 프로그램을 표시이 오류 '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