0

다른 XML 파일의 미리 정의 된 행을 사용하는 SimpleAdapter을 사용하여 다른 활동의 ListView에 EditText의 데이터를 저장하려고합니다. 이 모든 것은 Save Todo 버튼에 정의되어 있습니다. 모든 것이 잘 작동하지만 데이터를 저장할 때 null 포인터 오류가 발생합니다. 이미지 http://i.imgur.com/k95cilO.png단순 어댑터 널 포인터

import java.util.ArrayList; 
import java.util.HashMap; 

import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.SimpleAdapter; 
import android.widget.Spinner; 

public class Add_Item extends ActionBarActivity { 
//variables 
    EditText TaskNameET; 
    Spinner SpinType; 
    Button SaveTodo; 
    String SpinnerOptions[] = {"OptionOne", "OptionTwo", "OptionThree"}; 
    SimpleAdapter ListAdapt; 

//call mainactivity class 
    MainActivity Main; 

//declare arraylist and HashMap 
    ArrayList<HashMap<String, String>> mylist; 
    HashMap<String, String> map; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add__item); 

//define vars 
     TaskNameET = (EditText) findViewById(R.id.TaskNameET); 
     SpinType = (Spinner) findViewById(R.id.spinner1); 
     SaveTodo = (Button) findViewById(R.id.button1); 

//initialize mylist and map 
     mylist = new ArrayList<HashMap<String, String>>(); 
     map = new HashMap<String, String>(); 


//SimpleAdapter 
     ListAdapt = new SimpleAdapter(this, mylist, R.layout.row, new String[] {"columnone", "columntwo", "columnthree"}, new int[] {R.id.columnone, R.id.columntwo, R.id.columnthree}); 

//adapter for spinner 
     ArrayAdapter<String> ard=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, SpinnerOptions); 
     SpinType.setAdapter(ard); 

//onclick todobutton 
     SaveTodo.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       map.put("columnone", Add_Item.this.TaskNameET.getText().toString()); 
       map.put("columntwo", Add_Item.this.TaskNameET.getText().toString()); 
       map.put("columnthree", Add_Item.this.TaskNameET.getText().toString()); 
       mylist.add(map); 
       Main.MainList.setAdapter(ListAdapt); 
      } 
     }); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.add__item, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

//R.layout Add_Item의 XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.moduleonesimpleapplication.Add_Item" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:textSize="30sp" 
     android:text="@string/TitleText" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <EditText 
     android:id="@+id/TaskNameET" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/textView1" 
     android:layout_marginTop="34dp" 
     android:ems="10" 
     android:inputType="text" > 

     <requestFocus /> 

     <requestFocus /> 

    </EditText> 

    <Spinner 
     android:id="@+id/spinner1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView1" 
     android:layout_alignRight="@+id/TaskNameET" 
     android:layout_below="@+id/TaskNameET" 
     android:layout_marginTop="27dp" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/TaskNameET" 
     android:layout_alignParentLeft="true" 
     android:text="@string/TaskNameTXT" /> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView3" 
     android:layout_below="@+id/textView3" 
     android:layout_marginTop="48dp" 
     android:text="@string/TaskDateTXT" /> 

    <EditText 
     android:id="@+id/editText2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView4" 
     android:layout_alignBottom="@+id/textView4" 
     android:layout_alignLeft="@+id/spinner1" 
     android:ems="10" 
     android:inputType="date" > 
    </EditText> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_toLeftOf="@+id/editText2" 
     android:text="@string/SaveButton" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/spinner1" 
     android:layout_alignLeft="@+id/textView2" 
     android:layout_marginBottom="19dp" 
     android:text="@string/TaskTypeTxT" /> 

</RelativeLayout> 

//R.layout Row.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/columnone" 
      android:layout_width="100dip" 
      android:layout_height="wrap_content" 
      android:textColor="#C0C0C0" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

     <TextView 
      android:id="@+id/columntwo" 
      android:layout_width="100dip" 
      android:layout_height="wrap_content" 
      android:textColor="#C0C0C0" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

     <TextView 
      android:id="@+id/columnthree" 
      android:layout_width="120dip" 
      android:layout_height="wrap_content" 
      android:textColor="#C0C0C0" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

</LinearLayout> 
+0

'Main.MainList.setAdapter'가 무엇을 기대하는지 모르겠지만 이것이 작동하는지 의심 스럽습니다. – njzk2

+0

MainActivity.java 파일 – ssj3goku878

+0

의 listview에 어댑터의 저장된 데이터를 추가한다고 가정합니다. 상호 활동 커뮤니케이션은 그보다 약간 더 복잡합니다. – njzk2

답변

1

당신은 (당신의지도를 모든 변수를 초기화해야 목록 등)을 "declare"섹션이 아닌 onCreate 메소드에서 호출하십시오. 귀하의 코멘트에 따르면

:는, setAdapter는 MainActivity의 "널 예"에 적용되는)

편집,

난이 도움이되기를 바랍니다

. MainActivity에서 어댑터를 수정하는 정적 메서드를 만드는 것이 어떻습니까? 정적 방법 (nameClass.nameMethod(..))으로 호출해야합니다.

MainActivity! 이후 항상이 활동이 만들어 지도록하십시오! 당신의 주요 활동에

는 :

  • 는 확인 정적
  • 가에 액세스 할 수있는을위한 정적 "mathod를 선언 MainList :

    공공 정적 ListView에 getMainList는() {MainList를 반환;}

귀하의 Add_activity :

,
  • 당신이

    MainActivity.getMainList()에 대한 MainActivty.Main.setAdap... 라인 당신의 선언 MainActivity main;

  • 변경 삭제는, setAdapter (ListAdapt을).;

Eventhough ... 내게 정말 어려운 개발 방식이기 때문에 안드로이드 기본 사항 중 일부가 누락되었다고 생각합니다.

행운을 빈다.

+0

도움을 주셔서 감사합니다. mylist 변수를 선언하고 declare 섹션에 매핑하고 oncreate 메서드로 초기화를 옮겼으나 여전히 null 포인터를 얻고 있습니다. 코드를 다시 확인해 주시겠습니까? 나는 그것을 바꿨다. – ssj3goku878

+0

나는 시도 할 것이다. 잠시만;) –

+0

레이아웃을 게시 할 수 있습니까? R.layout.activity_add__item? –