2017-03-26 10 views
0

フィルタ機能を作成しようとしていますが、検索アクティビティにポップアップウィンドウが表示され、スイッチのリストが表示され、ユーザーはそれらのスイッチをオフにすることができます。 ポップアップ表示がうまく表示されますが、スイッチをチェックするたびに値が検索アクティビティに渡されず、何も実行されません。 は、ここに私のコードです:私は "トースト" を使用していますポップアップ内のスイッチを使用する

filter.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      initiatePopupWindow(); 
     } 
    }); 

ポップアップ機能(SearchActivity内側)

 private void initiatePopupWindow() { 
     try { 
// We need to get the instance of the LayoutInflater 
      LayoutInflater inflater = (LayoutInflater)SearchActivity.this 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View layout = inflater.inflate(R.layout.activity_filter, 
        (ViewGroup) findViewById(R.id.popup_element)); 
      pwindo = new PopupWindow(layout ,ViewGroup.LayoutParams.WRAP_CONTENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT,true); 

      pwindo.showAtLocation(layout, Gravity.CENTER, 0, 0); 

      switch1 = (Switch) findViewById(R.id.parking); 
      switch2 = (Switch) findViewById(R.id.delivery); 
      switch3 = (Switch) findViewById(R.id.reservation); 
      switch4 = (Switch) findViewById(R.id.bar); 
      switch5 = (Switch) findViewById(R.id.card); 
      switch6 = (Switch) findViewById(R.id.wifi); 
      switch7 = (Switch) findViewById(R.id.terrace); 

      btnClosePopup = (Button) layout.findViewById(R.id.btn_close_popup); 
      btnClosePopup.setOnClickListener(cancel_button_click_listener); 

      switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton compoundButton, boolean bChecked) { 
        if (bChecked) { 
         parking_filter=1; 
         Toast.makeText(getApplicationContext(), 
           "Searching Database using : " + parking_filter, 
           Toast.LENGTH_SHORT).show(); 

        } else { 
         parking_filter=0; 
         Toast.makeText(getApplicationContext(), 
           "Searching Database using : " + parking_filter, 
           Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }); 

activity_filter.xml(スイッチ)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/popup_element" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="@color/cardview_light_background" 
android:padding="10sp" > 
    <Switch 
     android:id="@+id/delivery" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:text="Has Delivery" 
     android:layout_below="@+id/reservation" 
     android:layout_alignParentStart="true" /> 

    <Switch 
     android:id="@+id/parking" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Has Parking" 
     android:layout_marginTop="20dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentStart="true" /> 
    <Switch 
     android:id="@+id/reservation" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Takes Reservations" 
     android:layout_marginTop="20dp" 
     android:layout_below="@+id/terrace" 
     android:layout_alignParentStart="true" /> 
    <Switch 
     android:id="@+id/terrace" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:text="outdoor seating" 
     android:layout_below="@+id/bar" 
     android:layout_alignParentStart="true" /> 
    <Switch 
     android:id="@+id/wifi" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:text="Has Wifi" 
     android:layout_below="@+id/parking" 
     android:layout_alignParentStart="true" /> 

    <Switch 
     android:id="@+id/bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:text="Has Bar" 
     android:layout_below="@+id/wifi" 
     android:layout_alignParentStart="true" /> 

    <Switch 
     android:id="@+id/card" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Accept Cards" 
     android:layout_marginTop="20dp" 
     android:layout_below="@+id/delivery" 
     android:layout_alignParentStart="true" /> 

<Button 
    android:id="@+id/btn_close_popup" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Close" 
    android:layout_below="@+id/card" /> 


</RelativeLayout> 

: 検索活動スニペット「パーキングフィルタ」の値を追跡するが、役に立たない。ログ内

java.lang.NullPointerException: Attempt to invoke virtual method 'void  android.widget.Switch.setOnCheckedChangeListener(android.widget.CompoundButton$OnCheckedChangeListener)' on a null object reference 

答えて

0

あなたのスイッチは間違った場所で探しているため、ヌルです。 あなたは膨らんだ正確なレイアウトのIDでビューを見つけなければなりません。

switch1 = (Switch) findViewById(R.id.parking); 

実行します:この

switch1 = (Switch) findViewById(R.id.parking); 

代わりのこの

switch1 = (Switch) layout.findViewById(R.id.parking); 
1

に変更し

switch1 = (Switch) layout.findViewById(R.id.parking); 
関連する問題