2016-12-19 17 views
-1

クリックしたときに別のアクティビティにリダイレクトする必要のあるTextViewを持つFragmentがあります。私はTextView "空"のOnClickListenerを実装しましたが、それは動作していません。私はクリックしたときに何かを印刷するためにSystem.outを置くが、それは印刷していない。AndroidフラグメントのTextViewでOnClickListenerが機能しない

これは私の断片である:

public class OrderFragment extends Fragment implements AdapterView.OnItemClickListener { 

    private BeeGif viewGif; 
    private ListView lstChefOrders; 
    private ArrayList<OrderList> orderLists, listOrders; 
    private TextView empty; 

    private SwipeRefreshLayout mSwipeRefreshLayout; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_order, null, false); 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     empty = (TextView) view.findViewById(R.id.empty); 
     lstChefOrders = (ListView) view.findViewById(R.id.lstChefOrders); 
     lstChefOrders.setOnItemClickListener(this); 

     RelativeLayout viewLayout = (RelativeLayout) view.findViewById(R.id.beeGifOrder); 
     viewGif = (BeeGif) viewLayout.findViewById(R.id.view); 

     mSwipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_refresh); 
     mSwipeRefreshLayout.setColorSchemeResources(R.color.colorPrimary); 
     mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
       if (NetworkHelper.isOnline(getActivity())) { 
        callOrderService(); 
       } else { 
        NetworkHelper.noNetworkToast(getActivity()); 
       } 
      } 
     }); 

     if (NetworkHelper.isOnline(getActivity())) { 
      if (!PrefernceHelper.getBoolean(getActivity(), Commons.Constants.USERLOGGEDIN)) { 

       lstChefOrders.setVisibility(View.GONE); 
       empty.setText(R.string.order_history); 

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

         System.out.println("Teste"); 
         Intent intent = new Intent(); 
         intent.setClass(getActivity(), SignInActivity.class); 
         startActivity(intent); 
        } 

       }); 

      } else { 
       lstChefOrders.setVisibility(View.VISIBLE); 
       empty.setVisibility(View.GONE); 
       viewGif.setVisibility(View.VISIBLE); 
       callOrderService(); 
      } 
     } else 
      NetworkHelper.noNetworkToast(getActivity()); 
    } 


    private void callOrderService() { 
     // Log.e("TAG", "Kuch toh patta chala : " + PrefernceHelper.getString(getActivity(), Commons.Constants.USER_ID)); 

     new VolleyHelper(getActivity()).get("foodiesOrderListing/" + PrefernceHelper.getString(getActivity(), Commons.Constants.USER_ID), null, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       viewGif.setVisibility(View.GONE); 
       mSwipeRefreshLayout.setRefreshing(false); 
       // Log.e("TAG", "Thanks for the return GIFT : " + response.toString()); 
       try { 
        // HashMap<String, List<OrderList>> listDataChild = new HashMap<String, List<OrderList>>(); 
        ArrayList<OrderId> orderIdList = new ArrayList<>(); 
        orderLists = new ArrayList<>(); 
        listOrders = new ArrayList<>(); 

        JSONArray array = response.getJSONArray("order_ids"); 

        for (int i = 0; i < array.length(); i++) { 
         String status = ""; 
         OrderList orderList1 = new OrderList(); 
         OrderId orderId = new OrderId(); 
         JSONObject object = array.getJSONObject(i); 
         String date = object.getString("order_date"); 
         orderId.setOrder_date(date); 
         orderId.setOrderid(object.getString("orderid")); 
         orderIdList.add(orderId); 

         //orderList1.setOrder_status("Pending"); 
         orderList1.setOrderid(object.getString("orderid")); 
         orderList1.setChef_id(""); 
         orderList1.setUser_id(""); 
         orderList1.setItem_id(""); 
         orderList1.setItem_qty(""); 
         orderList1.setItem_price(""); 
         orderList1.setItem_name(object.getString("orderid")); 
         orderList1.setOrderDate(object.getString("order_date")); 

         if (i % 2 == 0) { 
          orderList1.setBackGroundColor(Commons.Constants.TYPE_WHITE); 
         } else { 
          orderList1.setBackGroundColor(Commons.Constants.TYPE_GREY); 
         } 
         //listOrders.add(orderList1); 


         JSONArray orderListArray = response.getJSONArray("orderList"); 
         for (int j = 0; j < orderListArray.length(); j++) { 
          OrderList orderList = new OrderList(); 
          JSONObject orderListObject = orderListArray.getJSONObject(j); 
          if (orderIdList.get(i).getOrderid().equals(orderListObject.getString("orderid"))) { 

           status = orderListObject.getString("order_status"); 
           //orderList.setOrder_status(orderListObject.getString("order_status")); 
           //orderList.setOrderid(orderListObject.getString("orderid")); 
           //orderList.setChef_id(orderListObject.getString("chef_id")); 
           //orderList.setUser_id(orderListObject.getString("user_id")); 
           //orderList.setItem_id(orderListObject.getString("item_id")); 
           //orderList.setItem_qty(orderListObject.getString("item_qty")); 
           //orderList.setItem_price(orderListObject.getString("item_price")); 
           //orderList.setItem_name(orderListObject.getString("orderid")); 
           //orderList.setOrderDate(date); 
           /*if (j % 2 == 0) { 
            orderList.setBackGroundColor(Commons.Constants.TYPE_WHITE); 
           } else { 
            orderList.setBackGroundColor(Commons.Constants.TYPE_GREY); 
           } 
           orderLists.add(orderList);*/ 
          } 

         } 
         orderList1.setOrder_status(status); 
         listOrders.add(orderList1); 

         // listDataChild.put(orderId.getOrder_date(), orderLists); 

        } 

        if (listOrders.size() > 0) { 
         OrderListAdapter adapter = new OrderListAdapter(getActivity(), listOrders); //listDataChild (was the 3rd paramter for the Constructor earlier) 
         lstChefOrders.setAdapter(adapter); 
         empty.setVisibility(View.GONE); 
        } else { 
         if (getView().findViewById(R.id.empty) != null) 
          lstChefOrders.setEmptyView(getView().findViewById(R.id.empty)); 
         // for (int i = 0; i < adapter.getGroupCount(); i++) 
         // lstChefOrders.expandGroup(i); 
        } 
       } catch (JSONException je) { 

       }catch (NullPointerException npe){ 
        npe.printStackTrace(); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 
    } 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     Intent intent = new Intent(); 
     intent.setClass(getActivity(), OrderDetailsActivity.class); 
     //intent.putExtra("orderID", orderLists.get(position).getOrderid()); 
     intent.putExtra("orderID", listOrders.get(position).getOrderid()); 
     startActivity(intent); 

    } 
} 

そして、これはTextViewに持つフラグメントのためのXMLです:

<?xml version="1.0" encoding="utf-8"?> 
<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"> 


    <TextView 
     android:id="@+id/empty" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:gravity="center" 
     android:text="No Orders placed" 
     android:textColor="@color/toolbar_title_color" 
     android:textSize="23sp" 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp" 
     android:clickable="true"/> 

    <android.support.v4.widget.SwipeRefreshLayout 
     android:layout_below="@+id/searchText" 
     android:id="@+id/swipe_refresh" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".NearbyJobsActivity$PlaceholderFragment"> 
     <ListView 
      android:id="@+id/lstChefOrders" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="@dimen/margin_five" 
      android:divider="@color/line_color" 
      android:dividerHeight="1dp" 
      android:padding="@dimen/margin_five"/> 
    </android.support.v4.widget.SwipeRefreshLayout> 


    <include 
     android:id="@+id/beeGifOrder" 
     layout="@layout/view_bee_animation" 
     android:layout_width="@dimen/size_of_bee_gif" 
     android:layout_height="@dimen/size_of_bee_gif" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true"/> 
</RelativeLayout> 
+0

私はあなたのクラスでBindViewを見ることができません、それを実装しましたか? –

+0

onClickListenerを設定する前にlogステートメントを追加できますか?それが印刷されているかどうかを確認しますか? – Rahil2952

+0

BindViewとは何ですか?私は私のプロジェクトに他のonclicklistenersを持っていますが、彼らはすべて働いています。私はこの問題だけで問題があります。 –

答えて

1

それらの条件場合は、テキストビューにクリックリスナーを結合しません偽である:

if(NetworkHelper.isOnline(getActivity())) { 
     if (!PrefernceHelper.getBoolean(getActivity(), Commons.Constants.USERLOGGEDIN)) 
+0

私はあなたの答えを理解できませんでした。もう少し説明していただけますか? –

+0

たとえば、これがonViewCreatedで発生した場合: * NetworkHelper.isOnline(getActivity())== false *、 "空の"テキストビューには、クリックリスナーが添付されません。より論理的なアプローチを試してください。つまり、ネットワーク接続やリスナー内で必要なものをチェックすることです。 –

+0

これは、フラグメントビューが作成されたときにonViewCreated()が呼び出されるようになりました。その瞬間に、それらの「if」ステートメント内のコードが実行されない場合、リスナーはテキストビューに「アタッチ」されません。何か意味がある? –

0

このようにそれを実行します。

empty.setText(getResources().getString(R.string.order_history)); 
empty.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

Toast.makeText(getBaseContext(), "Teste", Toast.LENGTH_LONG).show(); 
Intent intent = new Intent(this, SignInActivity.class); 
startActivity(intent); 
} 
}); 
+0

あなたの答えをありがとう。私はそれを試みたが、何も印刷されていない。 –

+0

フラグメント内にある場合は、getbasecontext()をgetContext()に置き換え、 'this'をget context()に置き換え、startActivity()をget context()で置き換えます。 –

関連する問題