-1

我需要有关当前代码的帮助。我正在尝试将 Google 地方信息添加到我的应用程序中。这些是我得到的错误:

-地图无法解析或不是字段
MainActivity.java /MultiNAV/src/com/multinav 第 50 行 Java 问题

- main 无法解析或不是字段
MainActivity.java /MultiNAV/src/com/multinav 第 99 行 Java 问题

- activity_main 无法解析或不是字段 MainActivity.java /MultiNAV/src/com/multinav 第 42 行 Java 问题

-错误:解析 XML 时出错:标签
activity_main.xml /MultiNAV/res/layout 第 37 行 Android AAPT 问题不匹配

- item_list 无法解析或不是字段 MainActivity.java /MultiNAV/src/com/multinav 第 205 行 Java 问题

- textView无法解析 MainActivity.java /MultiNAV/src/com/multinav line 208 Java 问题

- autoCompleteTextView1 无法解析或不是字段 MainActivity.java /MultiNAV/src/com/multinav 第 113 行 Java 问题

- googleAPIKey 无法解析或不是字段
MainActivity.java /MultiNAV/src/com/multinav 第 159 行 Java 问题

- activity_main 无法解析或不是字段 MainActivity.java /MultiNAV/src/com/multinav 第 110 行 Java 问题

- item_list 无法解析或不是字段 MainActivity.java /MultiNAV/src/com/multinav 第 111 行 Java 问题

这是代码:Activity_main.xml

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

<!--
     Copyright (C) 2012 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<!-- This can go anywhere in your layout (see other demos for some examples). -->    
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#dddddd">
    <AutoCompleteTextView android:id="@+id/autoCompleteTextView1" 
        android:layout_height="wrap_content" android:layout_width="wrap_content" 
        android:layout_below="@+id/textView1" android:layout_alignLeft="@+id/textView2" 
        android:layout_marginTop="10dp" android:layout_alignRight="@+id/mapButton">
    </AutoCompleteTextView> 
  <fragment
      android:name="com.google.android.gms.maps.SupportMapFragment"
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      class="com.google.android.gms.maps.SupportMapFragment"/>
</LinearLayout>

MainActivity.java:

package com.multinav;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import android.R;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MainActivity extends FragmentActivity {

    private GoogleMap googleMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_item);
        setUpMapIfNeeded();
    }

    private void setUpMapIfNeeded() {
        // Do a null check to confirm that we have not already instantiated the map.
        if (googleMap == null){
            // Try to obtain the map from the SupportMapFragment.
            googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
            // Check if we were successful in obtaining the map.
            if (googleMap != null){
                setUpMap();
            }
        }

    }

    private void setUpMap() {
        // Enable MyLocation Layer of Google Map
        googleMap.setMyLocationEnabled(true);

        // Get LocationManager object from System Service LOCATION_SERVICE
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        // Create a criteria object to retrieve provider
        Criteria criteria = new Criteria();

        // Get the name of the best provider
        String provider = locationManager.getBestProvider(criteria, true);

        // Get Current Location
        Location myLocation = locationManager.getLastKnownLocation(provider);

        // Set map type
        googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);

        // Get latitude of the current location
        double latitude = myLocation.getLatitude();

        // get longitude of the current location
        double longitude = myLocation.getLongitude();

        // Create a LatLng object for the current location
        LatLng latLng = new LatLng(latitude, longitude);

        // Show the current location in Google Map
        googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));

        //Zoom in the Google Map
        googleMap.animateCamera(CameraUpdateFactory.zoomTo(20));
        googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("BAAMMMM!"));

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
public class Main extends Activity {
        /** Called when the activity is first created. */
    public ArrayAdapter<String> adapter;
    public AutoCompleteTextView textview;

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_list_item);
            final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.item_list);
            final AutoCompleteTextView textView = (AutoCompleteTextView)
                    findViewById(R.id.autoCompleteTextView1);
            adapter.setNotifyOnChange(true);
            textView.setAdapter(adapter);
             textView.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before, int count) {
    if (count%3 == 1) {
    adapter.clear();
                    GetPlaces task = new GetPlaces();
                            //now pass the argument in the textview to the task
                                    task.execute(textView.getText().toString());
        }
    }

    public void beforeTextChanged(CharSequence s, int start, int count,
    int after) {
    // TODO Auto-generated method stub

    }

    public void afterTextChanged(Editable s) {

    }

    });
}

    class GetPlaces extends AsyncTask<String, Void, ArrayList<String>> {

    @Override
                   // three dots is java for an array of strings
    protected ArrayList<String> doInBackground(String... args)
    {

    Log.d("gottaGo", "doInBackground");

    ArrayList<String> predictionsArr = new ArrayList<String>();


    try
    {

        URL googlePlaces = new URL(
                "https://maps.googleapis.com/maps/api/place/autocomplete/json?input=" +
                URLEncoder.encode(args[0], "UTF-8") +
                "&types=geocode&language=en&sensor=true&key=AIzaSyAkt0K6luIIWURTJ4kV07-S5TnqLMvD5js" +
                getResources().getString(R.string.googleAPIKey));
                URLConnection tc = googlePlaces.openConnection();
                BufferedReader in = new BufferedReader(new InputStreamReader(
                        tc.getInputStream()));

                String line;
                StringBuffer sb = new StringBuffer();
                                //take Google's legible JSON and turn it into one big string.
                while ((line = in.readLine()) != null) {
                sb.append(line);
                }
                                //turn that string into a JSON object
                JSONObject predictions = new JSONObject(sb.toString()); 
                               //now get the JSON array that's inside that object            
                JSONArray ja = new JSONArray(predictions.getString("predictions"));

                    for (int i = 0; i < ja.length(); i++) {
                        JSONObject jo = (JSONObject) ja.get(i);
                                        //add each entry to our array
                        predictionsArr.add(jo.getString("description"));
                    }
    } 
    catch (IOException e)
    {

    Log.e("MultiNAV", "GetPlaces : doInBackground", e);

    } 
    catch (JSONException e)
    {

    Log.e("MultiNAV", "GetPlaces : doInBackground", e);

    }

    return predictionsArr;

    }

    //then our post

    @Override
    protected void onPostExecute(ArrayList<String> result){

    Log.d("MultiNAV", "onPostExecute : " + result.size());
    //update the adapter
    adapter = new ArrayAdapter<String>(getBaseContext(), R.layout.item_list);
    adapter.setNotifyOnChange(true);
    //attach the adapter to textview
    textview.setAdapter(adapter); 

    for (String string : result){

    Log.d("MultiNAV", "onPostExecute : result = " + string);
    adapter.add(string);
    adapter.notifyDataSetChanged();

    }

    Log.d("MultiNAV", "onPostExecute : autoCompleteAdapter" + adapter.getCount());


        }

    }

}

}
4

1 回答 1

0

您的 XML 不匹配。每个打开的语句<>都必须有一个对应的</>来关闭它(在同一个语句中打开/关闭也可以)。

以下是缺少结束语的内容:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#dddddd">

只需</RelativeLayout>在您想要的位置添加一个 - 大概在倒数第二行。

于 2013-06-18T00:07:07.003 回答