3

J'ai une carte avec barre d'outils et une barre de recherche à saisie semi-automatique dans la disposition des coordonnées. Tout fonctionne bien dans la version Android ci-dessus 4.x mais dans Android 4.2.2, montre seulement la carte. La barre d'outils et la saisie automatique du texte ne s'affichent pas.Android 4.2.2 Fragment de carte Problème

S'il vous plaît aidez-moi à comprendre pourquoi cela se produit.

Xml:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

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

    <include 
     android:id="@+id/toolbar" 
     layout="@layout/activity_self_assigned_toolbar" /> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:layout_marginEnd="10dp" 
     android:layout_marginStart="10dp" 
     android:layout_marginTop="60dp" 
     android:background="#FFFF" 
     android:weightSum="1"> 


     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:orientation="horizontal"> 

      <AutoCompleteTextView 
       android:id="@+id/autocomplete" 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_gravity="bottom" 
       android:layout_weight="0.5" 
       android:hint="Type in your Location"> 

      </AutoCompleteTextView> 


      <ImageView 
       android:layout_width="30dp" 
       android:layout_height="30dp" 
       android:layout_gravity="center" 
       android:layout_weight="0" 
       android:id="@+id/custom_map_cross" 
       android:src="@drawable/icn_close"/> 



      <!--<Button--> 
      <!--android:id="@+id/search_button"--> 
      <!--android:layout_width="20dp"--> 
      <!--android:layout_weight="0.5"--> 
      <!--android:layout_height="40dp"--> 
      <!--android:layout_marginRight="5dp"--> 
      <!--android:layout_gravity="center"--> 
      <!--android:padding="5dp"--> 
      <!--android:background="@color/indigo_500"--> 
      <!--android:textColor="@android:color/white"--> 
      <!--android:text="Save" />--> 
     </LinearLayout> 


    </android.support.design.widget.AppBarLayout> 


    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</RelativeLayout> 
</android.support.design.widget.CoordinatorLayout> 

map.java:

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
       View view = inflater.inflate(R.layout.custom_map_layout,container,false); 
       ButterKnife.inject(this,view); 
     //  view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
     //    ViewGroup.LayoutParams.MATCH_PARENT)); 
       // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     //  SupportMapFragment mapFragment = (SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map); 
     //  mMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)) 
     //    .getMap(); 
       initialise(); 
       initialiseListeners(); 
       autoCompView.setAdapter(new GooglePlacesAutocompleteAdapter(getActivity(), R.layout.map_single_item)); 
       autoCompView.setOnItemClickListener(this); 
       saveButton.setOnClickListener(this); 
       cancelButton.setOnClickListener(this); 
       return view; 
      } 


      private void initialise() { 
     //  toolbar.setNavigationIcon(R.drawable.ic_keyboard_arrow_left_black_24dp); 
       activity = (AppCompatActivity) getActivity(); 

       toolbar.setTitle("Address"); 
      } 

      private void initialiseListeners() { 
       toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         getActivity().onBackPressed(); 
        } 
       }); 
      } 

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

       View view1 = getActivity().getCurrentFocus(); 
       if (view1 != null) { 
        InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
        imm.hideSoftInputFromWindow(view1.getWindowToken(), 0); 
       } 
     // and next place it, for exemple, on bottom right (as Google Maps app) 

       str = (String) parent.getItemAtPosition(position); 
     //  Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); 
       getLocationFromAddress(str); 
       if (latitude != null && longitude != null) { 
        LatLng latLng = new LatLng(latitude, longitude); 
        mMap.addMarker(new MarkerOptions().position(latLng)); 
        CameraPosition pos = CameraPosition.builder() 
          .target(latLng) 
          .zoom(12f) 
          .bearing(0.0f) 
          .tilt(0.0f) 
          .build(); 

        mMap.setMyLocationEnabled(true); 
        mMap.animateCamera(CameraUpdateFactory 
          .newCameraPosition(pos), null); 
       } 
      } 

      public void getLocationFromAddress(String strAddress) { 

       Geocoder coder = new Geocoder(context); 
       List<Address> address; 

       try { 
        address = coder.getFromLocationName(strAddress, 5); 
        if (address != null) { 

         Address location = address.get(0); 
         latitude = location.getLatitude(); 
         longitude = location.getLongitude(); 

        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

      } 

      @Override 
      public void onClick(View v) { 
       switch (v.getId()) { 
        case R.id.self_assignment_save_textview: 
         new generateCheckinsTask(context).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
         break; 

        case R.id.self_assignment_cancel_textview: 
     // 
     //    getActivity().getSupportFragmentManager().popBackStack(); 

         break; 

       } 

      } 

      private class generateCheckinsTask extends AsyncTask { 
       private Context context; 

       generateCheckinsTask(Context context) { 
        this.context = context; 
       } 


       @Override 
       protected Object doInBackground(Object[] params) { 

        return null; 

       } 

       @Override 
       protected void onPostExecute(Object o) { 
        super.onPostExecute(o); 

        Time time = new Time(); 
        time.setToNow(); 

        Fragment_Self_Assignment self_assignment = new Fragment_Self_Assignment(); 
        self_assignment.updateAddress(str,latitude,longitude); 

        Handler handler = new Handler(); 
        handler.postDelayed(new Runnable() { 
         public void run() { 

     //     if (materialDialog != null && materialDialog.isShowing()) { 
     //      materialDialog.dismiss(); 
     //     } 
          getActivity().finish(); 

         } 
        }, 500); 

       } 

       @Override 
       protected void onPreExecute() { 
        super.onPreExecute(); 

       } 
      } 

      @Override 
      public void onResume() { 


       Spannable actionBarTitle = new SpannableString("Add Place"); 
       actionBarTitle.setSpan(
         new ForegroundColorSpan(Color.WHITE), 
         0, 
         actionBarTitle.length(), 
         Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

       if(((AppCompatActivity) getActivity()).getSupportActionBar() != null){ 

        ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(actionBarTitle); 
        InputMethodManager imm = (InputMethodManager) getActivity() 
          .getSystemService(Context.INPUT_METHOD_SERVICE); 

        if(!imm.isAcceptingText()){ 
         imm.hideSoftInputFromWindow(getView().getWindowToken(),0); 
        } 

       } 
       super.onResume(); 
      } 

      @Override 
      public void onStart() { 
       super.onStart(); 
       if (activity.getSupportActionBar().isShowing()) 
        activity.getSupportActionBar().hide(); 
      } 
      @Override 
      public void onStop() { 
       super.onStop(); 
       if (!activity.getSupportActionBar().isShowing()) 
        activity.getSupportActionBar().show(); 
      } 

    public static ArrayList autocomplete(String input) { 
      ArrayList resultList = null; 
      HttpURLConnection conn = null; 
      StringBuilder jsonResults = new StringBuilder(); 

      try { 
       StringBuilder sb = new StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON); 
       sb.append("?key=" + API_KEY); 
    //   sb.append("&components=country:gr"); 
       sb.append("&input=" + URLEncoder.encode(input, "utf8")); 
       URL url = new URL(sb.toString()); 
       conn = (HttpURLConnection) url.openConnection(); 
       InputStreamReader in = new InputStreamReader(conn.getInputStream()); 
       // Load the results into a StringBuilder 
       int read; 
       char[] buff = new char[1024]; 
       while ((read = in.read(buff)) != -1) { 
        jsonResults.append(buff, 0, read); 
       } 
      } catch (MalformedURLException e) { 
       Log.e(LOG_TAG, "Error processing Places API URL", e); 
       return resultList; 
      } catch (IOException e) { 
       Log.e(LOG_TAG, "Error connecting to Places API", e); 
       return resultList; 
      } finally { 
       if (conn != null) { 
        conn.disconnect(); 
       } 
      } 
      try { 
       // Create a JSON object hierarchy from the results 
       JSONObject jsonObj = new JSONObject(jsonResults.toString()); 
       JSONArray predsJsonArray = jsonObj.getJSONArray("predictions"); 
       // Extract the Place descriptions from the results 
       resultList = new ArrayList(predsJsonArray.length()); 
       for (int i = 0; i < predsJsonArray.length(); i++) { 
        System.out.println(predsJsonArray.getJSONObject(i).getString("description")); 
        System.out.println("============================================================"); 
        resultList.add(predsJsonArray.getJSONObject(i).getString("description")); 
       } 
      } catch (JSONException e) { 
       Log.e(LOG_TAG, "Cannot process JSON results", e); 
      } 
      return resultList; 
     }  
     } 

NUMÉRO: l'image (4.2.2 Version):

enter image description here

image du même code sur une plus grande Version (code fin de travail): enter image description here

+0

son fragment de carte couvre votre barre d'outils, définissez le dessus de la marge pour votre fragment de carte, vous pouvez alors voir la barre d'outils –

+0

le problème est avec votre fichier XML. s'il vous plaît vérifier votre aperçu dans la version Android différents dans le studio, vous l'obtiendrez – DKV

Répondre

1

vérifier celui-ci

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:map="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

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

    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <include 
     android:id="@+id/toolbar" 
     layout="@layout/toolbar" /> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:layout_marginEnd="10dp" 
     android:layout_marginStart="10dp" 
     android:layout_marginTop="60dp" 
     android:background="#FFFF" 
     android:weightSum="1"> 


     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:orientation="horizontal"> 

      <AutoCompleteTextView 
       android:id="@+id/autocomplete" 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_gravity="bottom" 
       android:layout_weight="0.5" 
       android:hint="Type in your Location"> 

      </AutoCompleteTextView> 


      <ImageView 
       android:id="@+id/custom_map_cross" 
       android:layout_width="30dp" 
       android:layout_height="30dp" 
       android:layout_gravity="center" 
       android:layout_weight="0" 
       android:src="@drawable/pick_ticket_bg_large" /> 

     </LinearLayout> 


    </android.support.design.widget.AppBarLayout> 


</RelativeLayout> 

+0

Merci beaucoup. Une erreur aussi stupide. Merci pour l'aide . Aussi, serait reconnaissant si vous avez voté la question. –

2

Votre MapFragment est overlaping votre barre de recherche ToolBar et autocomplete, gardez-les au-dessus de MapFragment.

Essayez ceci.

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

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

     <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/map" 
      android:name="com.google.android.gms.maps.SupportMapFragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

     <include 
      android:id="@+id/toolbar" 
      layout="@layout/activity_self_assigned_toolbar" /> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/appbar" 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:layout_marginEnd="10dp" 
      android:layout_marginStart="10dp" 
      android:layout_marginTop="60dp" 
      android:background="#FFFF" 
      android:weightSum="1"> 


      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:orientation="horizontal"> 

       <AutoCompleteTextView 
        android:id="@+id/autocomplete" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="bottom" 
        android:layout_weight="0.5" 
        android:hint="Type in your Location"> 

       </AutoCompleteTextView> 

       <ImageView 
        android:layout_width="30dp" 
        android:layout_height="30dp" 
        android:layout_gravity="center" 
        android:layout_weight="0" 
        android:id="@+id/custom_map_cross" 
        android:src="@drawable/icn_close"/> 

      </LinearLayout> 

     </android.support.design.widget.AppBarLayout> 

    </RelativeLayout> 
</android.support.design.widget.CoordinatorLayout> 
+0

Oui, cela fonctionne. Merci beaucoup . Aussi, serait reconnaissant si vous avez voté la question. –