2012-02-07 46 views
1

我有以下的代碼,我的seekbar被一個nullpoint exeption崩潰。 在我的最後一個問題Why is my dialog seekbar crashing我coudn't找到信息來解決我的問題。SeekBar正在崩潰Nullpointer異常。

以下代碼:

dialog_context_mark_edit:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/edit_mark_dialog" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:padding="10dp" > 

    <TextView 
     android:id="@+id/TextView01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Name" /> 

    <EditText 
     android:id="@+id/edit_mark_name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <requestFocus /> 
    </EditText> 

    <TextView 
     android:id="@+id/lololol" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true"/> 

    <SeekBar 
     android:id="@+id/seek_edit_gewicht" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/TextView02" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Note" /> 

    <EditText 
     android:id="@+id/edit_mark_note" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Datum" /> 

    <DatePicker 
     android:id="@+id/date_maturity_mark_edit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="15dip" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/cmd_save_mark" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Updaten" /> 

     <Button 
      android:id="@+id/cmd_close_mark" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/close" /> 
    </LinearLayout> 

</LinearLayout> 

類標記:

SeekBar seekBar_wertung, seek_edit_gewicht, seek_gewicht, seek_gewichtt; 
TextView gewicht, gewicht_test; 

OnSeekBarChangeListener yourSeekBarListener = new OnSeekBarChangeListener() { 

public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) { 
    // TODO Auto-generated method stub 

    // change progress text label with current seekbar value 
    gewicht_test.setText(progress+"%"); 
    // change action text label to changing 
} 

public void onStartTrackingTouch(SeekBar seekBar) { 
} 

public void onStopTrackingTouch(SeekBar seekBar) { 
    seekBar.setSecondaryProgress(seekBar.getProgress()); 
} 

}; 

對話框:

@Override 
protected Dialog onCreateDialog(int id) { 
Dialog dialog = null;; 
    switch(id) { 
    case ADD_MARK_DIALOG: 
    dialog = new Dialog(mark.this); 

    dialog.setContentView(R.layout.dialog_context_mark); 
    dialog.setTitle("Note hinzufügen"); 

    insert_markname = (EditText)dialog.findViewById(R.id.insert_markname); 
    insert_note = (EditText)dialog.findViewById(R.id.insert_mark); 
    cmd_add_mark = (Button)dialog.findViewById(R.id.cmd_add_mark); 
    cmd_close_popup = (Button)dialog.findViewById(R.id.cmd_close_popup); 
    date_pick = (DatePicker)dialog.findViewById(R.id.date_maturity_mark); 
    seek_gewicht = (SeekBar)dialog.findViewById(R.id.seekBar_wertung); 
    seek_gewicht.setOnSeekBarChangeListener(yourSeekBarListener); 

    gewicht = (TextView)dialog.findViewById(R.id.txt_weight_change); 
    cmd_add_mark.setOnClickListener(add_mark); 
    cmd_close_popup.setOnClickListener(close_popup); 


     break; 
    case EDIT_MARK_DIALOG:  
     dialog = new Dialog(mark.this); 

     dialog.setContentView(R.layout.dialog_context_hw_edit); 
     dialog.setTitle("Note bearbeiten"); 

     edit_mark_name = (EditText)dialog.findViewById(R.id.edit_mark_name); 
     edit_mark_mark = (EditText)dialog.findViewById(R.id.edit_mark_note); 
     cmd_save_mark = (Button)dialog.findViewById(R.id.cmd_save_mark); 
     cmd_close_mark = (Button)dialog.findViewById(R.id.cmd_close_mark); 
     date_pick_edit = (DatePicker)dialog.findViewById(R.id.date_maturity_mark_edit); 
     seek_gewichtt = (SeekBar)dialog.findViewById(R.id.seek_edit_gewicht); 
     seek_gewichtt.setOnSeekBarChangeListener(yourSeekBarListener); 


     edit_mark_name.setText(name); 
     edit_mark_mark.setText(mark); 
     seek_gewichtt.setProgress(gewicht_mark_int); 

     gewicht_test = (TextView)dialog.findViewById(R.id.lololol); 
     cmd_save_mark.setOnClickListener(save_mark); 
     cmd_close_mark.setOnClickListener(close_popup_mark); 

      break; 
    } 

    return dialog; 
} 

logcat的:行339是seek_gewichtt.setOnSeekBa rChangeListener(yourSeekBarListener);

02-07 14:52:15.718: D/dalvikvm(11876): GC_EXTERNAL_ALLOC freed 51K, 50% free 2695K/5379K, external 0K/0K, paused 33ms 
02-07 14:52:15.761: D/dalvikvm(11876): GC_EXTERNAL_ALLOC freed 4K, 50% free 2698K/5379K, external 13K/523K, paused 32ms 
02-07 14:52:20.097: D/dalvikvm(11876): GC_EXTERNAL_ALLOC freed 81K, 47% free 2891K/5447K, external 4220K/4230K, paused 19ms 
02-07 14:52:20.113: D/AndroidRuntime(11876): Shutting down VM 
02-07 14:52:20.117: W/dalvikvm(11876): threadid=1: thread exiting with uncaught exception (group=0x40235568) 
02-07 14:52:20.121: E/AndroidRuntime(11876): FATAL EXCEPTION: main 
02-07 14:52:20.121: E/AndroidRuntime(11876): java.lang.NullPointerException 
02-07 14:52:20.121: E/AndroidRuntime(11876): at test.marco.notenha.mark.onCreateDialog(mark.java:339) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.app.Activity.onCreateDialog(Activity.java:2506) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.app.Activity.createDialog(Activity.java:885) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.app.Activity.showDialog(Activity.java:2581) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.app.Activity.showDialog(Activity.java:2548) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at test.marco.notenha.mark.onContextItemSelected(mark.java:255) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.app.Activity.onMenuItemSelected(Activity.java:2233) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback.onMenuItemSelected(PhoneWindow.java:2888) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:857) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:138) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at com.android.internal.app.AlertController$AlertParams$5.onItemClick(AlertController.java:928) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.widget.ListView.performItemClick(ListView.java:3535) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1827) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.os.Handler.handleCallback(Handler.java:587) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.os.Looper.loop(Looper.java:130) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at android.app.ActivityThread.main(ActivityThread.java:3703) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at java.lang.reflect.Method.invokeNative(Native Method) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at java.lang.reflect.Method.invoke(Method.java:507) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
02-07 14:52:20.121: E/AndroidRuntime(11876): at dalvik.system.NativeStart.main(Native Method) 
02-07 14:52:21.484: I/Process(11876): Sending signal. PID: 11876 SIG: 9 

回答

1

您對您的SeekBar使用了錯誤的ID。在您的XML中,它被定義爲seek_edit_gewicht,但您正在尋找R.id.seekBar_wertung。試試這個:

seek_gewicht = (SeekBar)dialog.findViewById(R.id.seek_edit_gewicht); 
+0

我還有seek_gewicht =(SeekBar)dialog.findViewById(R.id.seek_edit_gewicht); 看看我的對話框的第二個例子;)第一個工作。但第二個不是。謝謝 – 2012-02-07 14:20:30

+1

您發佈了第一個案例的XML,而不是第二個案例。如果第二種情況是問題,請發佈R.layout.dialog_context_hw_edit的XML。 – 2012-02-07 14:23:07

+0

該死......那解決了我的問題...... R.layout.dialog_context_hw_edit應該是R.layout.dialog_context_mark_edit。謝謝! – 2012-02-07 14:25:37

1

我什麼都不明白。您將顯示在dialog_context_mark_edit文件中定義的佈局。

但在對話框中,您使用R.layout.dialog_context_markR.layout.dialog_context_hw_edit。你能給我們提供文件dialog_context_mark和dialog_context_hw_edit嗎?你能插入整個標記類代碼嗎?

+0

看看我最後一次來自Brian Dupuis'Answer的評論;)但是謝謝! – 2012-02-07 14:47:41