gpt4 book ai didi

java - 在自定义 Android 应用程序中使用 Google map

转载 作者:行者123 更新时间:2023-11-29 03:52:22 25 4
gpt4 key购买 nike

我遇到了以下问题(如 LogCat 中所示)。我希望 any1 可以帮助我解决这个问题,因为我是 Android 应用程序开发的新手。

    11-17 16:50:38.087: E/AndroidRuntime(372): FATAL EXCEPTION: main
11-17 16:50:38.087: E/AndroidRuntime(372): java.lang.IllegalStateException: Could not execute method of the activity
11-17 16:50:38.087: E/AndroidRuntime(372): at android.view.View$1.onClick(View.java:2072)
11-17 16:50:38.087: E/AndroidRuntime(372): at android.view.View.performClick(View.java:2408)
11-17 16:50:38.087: E/AndroidRuntime(372): at android.view.View$PerformClick.run(View.java:8816)
11-17 16:50:38.087: E/AndroidRuntime(372): at android.os.Handler.handleCallback(Handler.java:587)
11-17 16:50:38.087: E/AndroidRuntime(372): at android.os.Handler.dispatchMessagev(Handler.java:92)
11-17 16:50:38.087: E/AndroidRuntime(372): at android.os.Looper.loop(Looper.java:123)
11-17 16:50:38.087: E/AndroidRuntime(372): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-17 16:50:38.087: E/AndroidRuntime(372): at java.lang.reflect.Method.invokeNative(Native Method)
11-17 16:50:38.087: E/AndroidRuntime(372): at java.lang.reflect.Method.invoke(Method.java:521)
11-17 16:50:38.087: E/AndroidRuntime(372): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-17 16:50:38.087: E/AndroidRuntime(372): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-17 16:50:38.087: E/AndroidRuntime(372): at dalvik.system.NativeStart.main(Native Method)
11-17 16:50:38.087: E/AndroidRuntime(372): Caused by: java.lang.reflect.InvocationTargetException
11-17 16:50:38.087: E/AndroidRuntime(372): at com.mspl.activities.AlertListActivity.doShow(AlertListActivity.java:144)
11-17 16:50:38.087: E/AndroidRuntime(372): at java.lang.reflect.Method.invokeNative(Native Method)
11-17 16:50:38.087: E/AndroidRuntime(372): at java.lang.reflect.Method.invoke(Method.java:521)enter code here
11-17 16:50:38.087: E/AndroidRuntime(372): at android.view.View$1.onClick(View.java:2067)
11-17 16:50:38.087: E/AndroidRuntime(372): ... 11 more
11-17 16:50:38.087: E/AndroidRuntime(372): Caused by: java.lang.NoClassDefFoundError: com.mspl.activities.AlertLocationActivity
11-17 16:50:38.087: E/AndroidRuntime(372): ... 15 more
11-17 16:50:38.087: E/AndroidRuntime(372): Caused by: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
11-17 16:50:38.087: E/AndroidRuntime(372): at dalvik.system.DexFile.defineClass(Native Method)
11-17 16:50:38.087: E/AndroidRuntime(372): at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:209)
11-17 16:50:38.087: E/AndroidRuntime(372): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:203)
11-17 16:50:38.087: E/AndroidRuntime(372): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
11-17 16:50:38.087: E/AndroidRuntime(372): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
11-17 16:50:38.087: E/AndroidRuntime(372): ... 15 more

这是我的 AlertListActivity.java 文件:-

package com.mspl.activities;
enter code here
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class AlertListActivity extends ListActivity {
static final ArrayList<HashMap<String, String>> list2 = new ArrayList<HashMap<String, String>>();
Date date;
HashMap<String, String> map = new HashMap<String, String>();
static int flag = 0;
SimpleAdapter a;
int selectedIndex = 0;

// AlertAdapter sa;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.alert);
//addContentView(R.layout.crowview,new ViewGroup.LayoutParams(this));
SimpleAdapter adapter = new SimpleAdapter(this, list2, R.layout.crowview, new String[] { "alert_type", "date", "identity"}, new int[] { R.id.alarmType, R.id.date, R.id.identity});
populateList();
a = adapter;
setListAdapter(adapter);
}


public void populateList() //Statically filling the ArrayList with HashMap values
{

if (flag == 0) // For entry to be entered only once
{
flag = 1;
map.put("alert_type", "Alert_1");
date = new Date(121, 11, 9, 17, 5, 00);
map.put("date", date.toString());
map.put("identity", "9001");
list2.add(map);

map = new HashMap<String, String>();
map.put("alert_type", "Alert_2");
date = new Date(111, 11, 9, 17, 5, 05);
map.put("date", date.toString());
map.put("identity", "9002");
list2.add(map);

map = new HashMap<String, String>();
map.put("alert_type", "Alert_3");
date = new Date(111, 11, 9, 17, 5, 10);
map.put("date", date.toString());
map.put("identity", "9003");
list2.add(map);

map = new HashMap<String, String>();
map.put("alert_type", "Alert_4");
date = new Date(111, 11, 9, 17, 5, 15);
map.put("date", date.toString());
map.put("identity", "9004");
list2.add(map);

map = new HashMap<String, String>();
map.put("alert_type", "Alert_5");
date = new Date(111, 11, 9, 17, 5, 20);
map.put("date", date.toString());
map.put("identity", "9005");
list2.add(map);
}

}

public void onAck(View view) //Performs Delete operation on Alert List
{
ListView lv1 = getListView();
// long i2 = lv1.getSelectedItemPosition();
//lv1.setSelection(i2);
// int i3 = view.getId();


//list2.remove(i2);

LinearLayout llv = (LinearLayout)view.getParent().getParent();
LinearLayout llv2 = (LinearLayout)llv.getChildAt(0);
TextView child = (TextView)llv2.getChildAt(0);


//Toast.makeText(getApplicationContext(),((TextView)child).getText(), Toast.LENGTH_SHORT).show();
for(int i=0 ; i<list2.size() ; i++)
{
HashMap<String, String> hm = list2.get(i);
String str = hm.get("identity");
if(str.equals(child.getText()))
{
list2.remove(i);
break;
}
}

lv1.refreshDrawableState();
a.notifyDataSetChanged();
a.notifyDataSetInvalidated();

}



public void doShow(View view)
{
try{
Intent intent = new Intent(AlertListActivity.this, AlertLocationActivity.class);
startActivity(intent);
}
catch(Exception e)
{
e.printStackTrace();
}
}


@Override
protected void onListItemClick(ListView l, View v, int position, long id) //Listener for ListView Item click
{
super.onListItemClick(l, v, position, id);
selectedIndex = position;
Object o = this.getListAdapter().getItem(position);

String str = o.toString();
// Toast.makeText(this, "You have chosen: " + " " + str,
// Toast.LENGTH_LONG).show();
Intent i = new Intent(this, AlertDetailsActivity.class);
i.putExtra("str", str);
startActivity(i);

}

}

这是我的 AlertLocationActivity.java 文件:-

    package com.mspl.activities;

import java.util.List;

import android.graphics.drawable.Drawable;
import android.os.Bundle;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

public class AlertLocationActivity extends MapActivity
{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);

MapView mapView = (MapView) findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(true);

List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable);

GeoPoint point = new GeoPoint(19240000,-99120000);
OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");

itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
}

@Override
protected boolean isRouteDisplayed() {
return false;
}

}

AndroidManifest.xml 文件:-

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mspl.activities" android:versionCode="1"
android:versionName="1.0">

<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".ShowVehicleListActivity"
android:label="@string/vehicle.list.screen" />

<activity android:name=".AlertListActivity"
android:label="@string/alert.list.screen" />

<activity android:name=".AlertDetailsActivity"
android:label="@string/alert2.list.screen" />


<uses-library android:name="com.google.android.maps" />

<activity android:name=".AlertLocationActivity"
android:label="@string/alert.loc.screen" />

</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
</manifest>

这是我的 mapview.xml 文件:-

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="0WYMWNJ2XW382cucH2luf4o6bRtkU7W6vROnlrg"
/>
<LinearLayout android:id="@+id/zoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>

最佳答案

我已经解决了。

问题是两个 Google API 库被引用,即使它没有显示 Google API 文件夹。我想这一定是因为我在创建了我正在使用它的应用程序之后安装了 Google map 插件。

解决方案是在“配置构建路径”中删除对“maps.jar”的引用,然后创建一个新的 Android 项目并将 Google APIs 文件夹复制粘贴到我当前的项目中。

无论如何还是谢谢大家...

关于java - 在自定义 Android 应用程序中使用 Google map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8166513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com