2016-07-15 84 views
-1

我有一个愚蠢的问题,但我还是无法解决它。我有一个工具栏中的按钮的活动,这个按钮用一些过滤参数打开一个对话框。 这里是ai的做..对话框中的NullPointerException - 奇怪的情况

Spinner spinner_categoria; 
Spinner spinner_vendedor; 
SeekBar seek_preco; 
TextView tv_filtro; 

onCreate method { 
... 
} 

onClickEvent{ 
    dialogFiltro(); 
} 

    public void dialogFiltro() { 
    Context context = SalesActivity.this; 
    final Dialog dialog; 

    dialog = new Dialog(context); 
    //dialog.setContentView(R.layout.dialog_filtro); 
    // dialog.setTitle("Filtro"); 
    //dialog.show(); 

    VendedorDAO auxVendedor = new VendedorDAO(); 
    final List<String> listVendedor = auxVendedor.getVendedorList(); 

    View dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_filtro, null, false); 

    CardView bt_cancelar = (CardView) dialogView.findViewById(R.id.cb_filtro_cancelar); 
    CardView bt_aceitar = (CardView) dialogView.findViewById(R.id.cb_filtro_aceitar); 
    seek_preco = (SeekBar) dialogView.findViewById(R.id.sb_preco_max); 

    tv_filtro = (TextView) dialogView.findViewById(R.id.tv_filtro_preco); 
    spinner_categoria = (Spinner) dialogView.findViewById(R.id.spinner_categoria); 
    spinner_vendedor = (Spinner) dialogView.findViewById(R.id.spinner_vendedor); 

    spinner_categoria.setAdapter(ArrayAdapter.createFromResource(
      this, R.array.categoria_array, android.R.layout.simple_spinner_item)); 
    spinner_vendedor.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listVendedor)); 

    String oi = "oi"; 

    tv_filtro.setText(oi); 

    dialog.setContentView(dialogView); 
    dialog.show(); 

    seek_preco.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      // tv_filtro.setText("R$ " + progress); 
      // Log.i("RS " , String.valueOf(progress)); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 

    bt_cancelar.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 


     } 
    }); 


    bt_aceitar.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      categoria = (String) spinner_categoria.getSelectedItem(); 
      vendedor = (Integer) spinner_vendedor.getFirstVisiblePosition(); 
      Log.e("id vendedor ", String.valueOf(vendedor)); 

      if (vendedor == 0) { 
       vendedor = -1; 
      } 


      int precoAux = seek_preco.getProgress(); 
      precoMax = (float) precoAux; 
     } 
    }); 


} 

我有这个在dialog_filtro.xml文件:

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

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:card_view="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/card" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     android:layout_margin="8dp" 
     android:foreground="@drawable/border_card" 
     card_view:cardElevation="2dp" 
     card_view:cardMaxElevation="8dp"> 


     <ScrollView 
      android:id="@+id/scrollView2" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_margin="16dp" 
       android:orientation="vertical"> 

       <FrameLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal"> 

        <Button 
         android:id="@+id/cb_filtro_cancelar" 
         android:layout_width="70dp" 
         android:layout_height="30dp" 
         android:background="@color/colorPrimary" 
         android:elevation="2dp" 
         android:text="X" 
         android:textColor="@android:color/white" /> 

        <Button 
         android:id="@+id/cb_filtro_aceitar" 
         android:layout_width="70dp" 
         android:layout_height="30dp" 
         android:layout_gravity="end" 
         android:background="@color/colorPrimary" 
         android:elevation="2dp" 
         android:text="Aceitar" 
         android:textColor="@android:color/white" /> 

       </FrameLayout> 


       <TextView 
        android:id="@+id/textView9" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:layout_marginTop="5dp" 
        android:text="Filtrar por" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:textColor="@color/colorPrimary" /> 

       <TextView 
        android:id="@+id/tv_label_categoria" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:layout_weight="1" 
        android:gravity="center" 
        android:text="Categoria" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 

       <Spinner 
        android:id="@+id/spinner_categoria" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:spinnerMode="dialog" /> 

       <TextView 
        android:id="@+id/tv_label_vendedor" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:layout_weight="1" 
        android:gravity="center" 
        android:text="Supermercado" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 

       <Spinner 
        android:id="@+id/spinner_vendedor" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:spinnerMode="dialog" /> 

       <TextView 
        android:id="@+id/textView7" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Preço máximo" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 


       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:gravity="center_vertical" 
        android:orientation="horizontal"> 

        <SeekBar 
         android:id="@+id/sb_preco_max" 
         android:layout_width="0dp" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" 
         android:indeterminate="false" 
         android:max="100" 
         android:progress="0" /> 

        <TextView 
         android:id="@+id/tv_filtro_preco" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="10dp" 
         android:layout_marginRight="10dp" 
         android:text="5" 
         android:textAppearance="?android:attr/textAppearanceSmall" /> 
       </LinearLayout> 

       <View 
        android:id="@+id/rv_shoppingcart_separator" 
        android:layout_width="match_parent" 
        android:layout_height="1dp" 
        android:layout_marginBottom="2dp" 
        android:layout_marginTop="10dp" 
        android:background="@android:color/darker_gray" /> 

       <TextView 
        android:id="@+id/tv_label_oerdenar" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:layout_marginTop="15dp" 
        android:text="Ordenar por" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:textColor="@color/colorPrimary" /> 

       <TextView 
        android:id="@+id/textView11" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:text="Preço:" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 

       <RadioGroup 
        android:id="@+id/group_preco" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_gravity="center" 
        android:layout_marginLeft="5dp" 
        android:layout_marginTop="10dp" 
        android:gravity="center" 
        android:orientation="horizontal"> 

        <RadioButton 
         android:id="@+id/rb_preco_maior" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" 
         android:checked="false" 
         android:text="Maior" /> 

        <RadioButton 
         android:id="@+id/rb_preco_menor" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" 
         android:checked="false" 
         android:text="Menor" /> 
       </RadioGroup> 

       <TextView 
        android:id="@+id/tv_label_data_Validade" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:layout_marginTop="10dp" 
        android:layout_weight="1" 
        android:text="Data de validade:" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 

       <RadioGroup 
        android:id="@+id/group_validade" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:layout_marginLeft="10dp" 
        android:layout_marginTop="5dp" 
        android:layout_weight="1" 
        android:gravity="center" 
        android:orientation="horizontal"> 

        <RadioButton 
         android:id="@+id/rb_validade_maior" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" 
         android:checked="false" 
         android:text="Maior" /> 

        <RadioButton 
         android:id="@+id/rb_validade_menor" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" 
         android:checked="false" 
         android:text="Menor" /> 
       </RadioGroup> 

       <LinearLayout 
        android:id="@+id/linear_isoffer" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:orientation="vertical"> 

        <TextView 
         android:id="@+id/tv_label_ofertas" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="10dp" 
         android:layout_weight="1" 
         android:text="Apenas ofertas:" 
         android:textAppearance="?android:attr/textAppearanceMedium" /> 

        <CheckBox 
         android:id="@+id/cb_offer" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="5dp" 
         android:layout_weight="1" 
         android:checked="false" 
         android:text="Selecionar apenas ofertas" /> 
       </LinearLayout> 

      </LinearLayout> 

     </ScrollView> 

    </android.support.v7.widget.CardView> 

</LinearLayout> 

一切工作正常(微调,cardview等),但我总是得到NullPointerException异常,因为TextView的,我不知道为什么。这里去我的日志:

FATAL EXCEPTION: main 
Process: com.catafeira.catafeira, PID: 2419 
Theme: themes:{default=overlay:system, iconPack:system, fontPkg:system, com.android.systemui=overlay:system, com.android.systemui.navbar=overlay:system} 
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 
at com.catafeira.catafeira.SalesActivity.dialogFiltro(SalesActivity.java:281) 
at com.catafeira.catafeira.SalesActivity.onOptionsItemSelected(SalesActivity.java:432) 
at android.app.Activity.onMenuItemSelected(Activity.java:2914) 
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:403) 
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:189) 
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100) 
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100) 
at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:69) 
at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:169) 
at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:760) 
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811) 
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152) 
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958) 
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:948) 
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:618) 
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:139) 
at android.view.View.performClick(View.java:5204) 
at android.view.View$PerformClick.run(View.java:21158) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5461) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

编辑:我知道什么是一个NullPointerException,我已经选中了subject以前的职位,但没有问题是我的一样

+0

这是xml的'dialog_filtro.xml'吗? – codeMagic

+0

是的,它的一部分 –

+0

@Luiz Otavio Nunes它可能会帮助,如果你可以删除你的代码和错误输出中的一些多余的空白。 – Tibrogargan

回答

0

解决

是一些有关Android的材质设计,我没有一些布局之前注意这个问题有2个文件,所以一些文件已经过时-.- 感谢大家,试图帮助。

0

我认为这个问题是findViewByID 。该文件说

findViewById

在API级别1 查看findViewById(INT ID) 查找具有给定标识的子视图。如果指定的子视图不存在或对话框尚未完全创建(例如,通过show()或create()),则返回null。

这只是可能的,因为你稍后调用show()可能不会创建textView。我会做这个

View dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_filtro, null); 

Button bt_cancelar = (Button) dialogView.findViewById(R.id.cb_filtro_cancelar); 
Button bt_aceitar = (Button) dialogView.findViewById(R.id.cb_filtro_aceitar); 
seek_preco = (SeekBar) dialogView.findViewById(R.id.sb_preco_max); 

tv_filtro = (TextView) dialogView.findViewById(R.id.tv_filtro_preco); 
spinner_categoria = (Spinner) dialogView.findViewById(R.id.spinner_categoria); 
spinner_vendedor = (Spinner) dialogView.findViewById(R.id.spinner_vendedor); 

dialog.setContentView(dialogView) 
dialog.show(); 

spinner_categoria.setAdapter(ArrayAdapter.createFromResource(
     this, R.array.categoria_array, android.R.layout.simple_spinner_item)); 
spinner_vendedor.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,listVendedor)); 

tv_filtro.setText("oi"); 

更改XML以下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:cardview="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/card" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:foreground="@drawable/border_card" 
    android:layout_margin="8dp" 
    card_view:cardElevation="2dp" 
    card_view:cardMaxElevation="8dp"> 



    <ScrollView 
     android:id="@+id/scrollView2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="16dp" 
      android:orientation="vertical"> 

      <FrameLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal"> 

       <Button 
        android:id="@+id/cb_filtro_cancelar" 
        android:layout_width="70dp" 
        android:layout_height="30dp" 
        android:background="@color/colorPrimary" 
        android:elevation="2dp" 
        android:text="X" 
        android:textColor="@android:color/white" /> 

       <Button 
        android:id="@+id/cb_filtro_aceitar" 
        android:layout_width="70dp" 
        android:layout_height="30dp" 
        android:layout_gravity="end" 
        android:background="@color/colorPrimary" 
        android:elevation="2dp" 
        android:text="Aceitar" 
        android:textColor="@android:color/white" /> 

      </FrameLayout> 


      <TextView 
       android:id="@+id/textView9" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_marginTop="5dp" 
       android:text="Filtrar por" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:textColor="@color/colorPrimary" /> 

      <TextView 
       android:id="@+id/tv_label_categoria" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="Categoria" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <Spinner 
       android:id="@+id/spinner_categoria" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:spinnerMode="dialog" /> 

      <TextView 
       android:id="@+id/tv_label_vendedor" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="Supermercado" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <Spinner 
       android:id="@+id/spinner_vendedor" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:spinnerMode="dialog" /> 

      <TextView 
       android:id="@+id/textView7" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Preço máximo" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 


      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center_vertical" 
       android:orientation="horizontal"> 

       <SeekBar 
        android:id="@+id/sb_preco_max" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:indeterminate="false" 
        android:max="100" 
        android:progress="5" /> 

       <TextView 
        android:id="@+id/tv_filtro_preco" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="10dp" 
        android:layout_marginRight="10dp" 
        android:text="5" 
        android:textAppearance="?android:attr/textAppearanceSmall" /> 
      </LinearLayout> 

      <View 
       android:id="@+id/rv_shoppingcart_separator" 
       android:layout_width="match_parent" 
       android:layout_height="1dp" 
       android:layout_marginBottom="2dp" 
       android:layout_marginTop="10dp" 
       android:background="@android:color/darker_gray" /> 

      <TextView 
       android:id="@+id/tv_label_oerdenar" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_marginTop="15dp" 
       android:text="Ordenar por" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:textColor="@color/colorPrimary" /> 

      <TextView 
       android:id="@+id/textView11" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:text="Preço:" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <RadioGroup 
       android:id="@+id/group_preco" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_gravity="center" 
       android:layout_marginTop="10dp" 
       android:layout_marginLeft="5dp" 
       android:gravity="center" 
       android:orientation="horizontal"> 

       <RadioButton 
        android:id="@+id/rb_preco_maior" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:checked="false" 
        android:text="Maior" /> 

       <RadioButton 
        android:id="@+id/rb_preco_menor" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:checked="false" 
        android:text="Menor" /> 
      </RadioGroup> 

      <TextView 
       android:id="@+id/tv_label_data_Validade" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_marginTop="10dp" 
       android:layout_weight="1" 
       android:text="Data de validade:" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <RadioGroup 
       android:id="@+id/group_validade" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_marginLeft="10dp" 
       android:layout_marginTop="5dp" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:orientation="horizontal"> 

       <RadioButton 
        android:id="@+id/rb_validade_maior" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:checked="false" 
        android:text="Maior" /> 

       <RadioButton 
        android:id="@+id/rb_validade_menor" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:checked="false" 
        android:text="Menor" /> 
      </RadioGroup> 

      <TextView 
       android:id="@+id/tv_label_ofertas" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_marginTop="10dp" 
       android:text="Apenas ofertas:" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <CheckBox 
       android:id="@+id/cb_offer" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="5dp" 
       android:layout_weight="1" 
       android:checked="false" 
       android:text="Selecionar apenas ofertas" /> 

     </LinearLayout> 

    </ScrollView> 

</android.support.v7.widget.CardView> 

希望这有助于!

+0

尝试过,仍然没有成功,我已经更新了我的完整代码,请查看 –

+0

它是否仍然提供NPE?另外,我做了一个小编辑。一探究竟! – prats110892

+0

是的,仍然是NPE。我已经更新了我的代码与你的消化,并发布了整个代码 –