2013-06-18 3 views
0

내 프로젝트에서 특정 그룹에 대해 동적으로 레코드를 추가하려고합니다. 이것은 내가 작성한 코드로, 레코드를 추가하는 동안 삽입합니다. 나는 새로운 아이 생성되는 레코드를 추가 할 때 : 그래서, 위의 코드확장 가능한 목록보기에 동적으로 자식 추가 ExpandableListAdapter에서 java.lang.NullPointerException을 생성합니다.

public class addshare extends Activity{ 
    DBAdapter db = new DBAdapter(this); 
    MyCustomAdapter c=new MyCustomAdapter(); 
    private ExpandableListView mExpandableList; 
    public void addshare(){} 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.add); 
    } 

    public void addingshare(View v) 
    { 
     Log.d("test", "adding"); 
     //get data from form 
     //EditText intypeid = (EditText)findViewById(R.id.intypeid); 
     EditText sharename= (EditText)findViewById(R.id.sharename); 
     EditText shareid = (EditText)findViewById(R.id.shareid); 
     EditText purpri = (EditText)findViewById(R.id.purpri); 
     EditText sharepri = (EditText)findViewById(R.id.sharepri); 
     EditText shareno = (EditText)findViewById(R.id.shareno); 
     EditText purdate = (EditText)findViewById(R.id.purdate); 
     EditText purplace = (EditText)findViewById(R.id.purplace); 
     EditText purcon = (EditText)findViewById(R.id.purcon); 
     Float totalinvestment=0F,currmarketvalue=0F; 


      String sname=sharename.getText().toString(); 

      String s1=sharepri.getText().toString(); 
      Float n1=Float.parseFloat(s1); 

      String s2=purpri.getText().toString(); 
      Float n2=Float.parseFloat(s2); 

     // shares_equities s=new shares_equities(sname); 
      String s3=shareno.getText().toString(); 
      Integer i1=Integer.parseInt(s3); 
      db.open();   
      long id = db.addRecord(sname, shareid.getText().toString(), 
       n2,n1,i1, purdate.getText().toString(),purplace.getText().toString(),purcon.getText().toString() 
       ,totalinvestment,currmarketvalue); 
      //COMMENTED BELOW AS IT GENERATES THE EXCEPTION 
     /* mExpandableList= (ExpandableListView) this.findViewById(R.id.expandable_list); 

     ExpandableListAdapter adapter = (ExpandableListAdapter) mExpandableList.getExpandableListAdapter(); 
      ArrayList<String> arrayChildren = new ArrayList<String>(); 
      ArrayList<parent> arrayParents = new ArrayList<parent>(); 
      parent parent1=new parent(); 
      parent parent2=new parent(); 
      parent parent3=new parent(); 
      parent parent4=new parent(); 

      parent1 = ((parent)adapter.getGroup(0)); 
      arrayChildren=parent1.getArrayChildren(); 
      arrayChildren.add("share4"); 
      parent1.setArrayChildren(arrayChildren); 
      arrayParents.add(parent1); 

      parent2 = ((parent)adapter.getGroup(1)); 
      arrayParents.add(parent2); 

      parent3 = ((parent)adapter.getGroup(2)); 
      arrayParents.add(parent3); 

      parent4 = ((parent)adapter.getGroup(3)); 
      arrayParents.add(parent4); 

      mExpandableList.setAdapter(new MyCustomAdapter(addshare.this,arrayParents)); 
     */ 
      db.close(); 

     sharename.setText(""); 
     shareid.setText(""); 
     purpri.setText(""); 
     sharepri.setText(""); 
     shareno.setText(""); 
     purdate.setText(""); 
     purplace.setText(""); 
     purcon.setText(""); 


     Toast.makeText(addshare.this,"share record Added", Toast.LENGTH_LONG).show(); 

     Intent i = new Intent(this, MainActivity.class); 
     startActivity(i); 





    } 
    public void viewAssignments(View v) 
    { 
    Intent i = new Intent(this, MainActivity.class); 
    startActivity(i); 
    } 




} 

이 오류를 범 전 레코드를 추가 할 때 로그 캣 (주)

06-18 22:55:12.632: E/AndroidRuntime(681): FATAL EXCEPTION: main 
06-18 22:55:12.632: E/AndroidRuntime(681): java.lang.IllegalStateException: Could not execute method of the activity 
06-18 22:55:12.632: E/AndroidRuntime(681):  at      android.view.View$1.onClick(View.java:3039) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at android.view.View.performClick(View.java:3480) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at android.view.View$PerformClick.run(View.java:13983) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at android.os.Handler.handleCallback(Handler.java:605) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at android.os.Handler.dispatc hMessage(Handler.java:92) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at android.os.Looper.loop(Looper.java:137) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at android.app.ActivityThread.main(ActivityThread.java:4340) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at com .android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at dalvik.system.NativeStart.main(Native Method) 
06-18 22:55:12.632: E/AndroidRuntime(681): Caused by: java.lang.reflect.InvocationTargetException 
06-18 22:55:12.632: E/AndroidRuntime(681):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-18 22:55:12.632: E/AndroidRuntime(681):  at android.view.View$1.onClick(View.java:3034) 
06-18 22:55:12.632: E/AndroidRuntime(681):  ... 11 more 
06-18 22:55:12.632: E/AndroidRuntime(681): Caused by: java.lang.NullPointerException 
06-18 22:55:12.632: E/AndroidRuntime(681):  at com.example.moolah.addshare.addingshare(addshare.java:58) 
06-18 22:55:12.632: E/AndroidRuntime(681):  ... 14 more 

팽창성리스트 XML을

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 
     ... 
     <ExpandableListView 
      android:id="@+id/expandable_list" 
      android:layout_width="fill_parent" 
      android:layout_height="400dp" 
      android:layout_weight="2900208.75" 
      android:cacheColorHint="#00000000" 
      android:listSelector="@android:color/transparent" 
      android:transcriptMode="disabled" /> 

     <Button 
      android:id="@+id/addnew" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_margin="5dp" 
      android:text="ADD NEW" 
      android:onClick="sendMessage_addrecord" /> 
    </LinearLayout> 

+0

ps : addshare.java의 LINE 58은 ExpandableListAdapter입니다. adapter = (ExpandableListAdapter) mExpandableList.getExpandableListAdapter(); – user2468835

+0

'this'는 활동 컨텍스트를 의미합니까? 'mExpandableList = (ExpandableListView) this.findViewById (R.id.expandable_list)' – Raghunandan

+0

더 게시해야합니다. onCreate()와 R.id.expandable_list가 정의 된 xml이 도움이 될 것입니다. – JRomero

답변

1

mExpandableList 그렇게null의 경우에서보기를 찾지 못했습니다.

+0

오. 나는 그것이 정말로 간단했다. :) 어떻게 해결합니까? 그 때 바보 같았 기 때문에 – user2468835

+0

upvoted이 적절한 의미가 있습니다. 표시 레이아웃에 확장 가능한 목록이 없습니다. – user2468835

+0

하지만, 레이아웃에 넣지 않고 다른 활동에서이 목록을 참조해야합니다. 이 일을하기 위해 어딘가에 있지 않습니까? 달리 동적으로 레코드를 어떻게 추가합니까? – user2468835

관련 문제