Android 如何解决此问题->;找不到显式活动类
我有一个来自JSON的带有列表视图的片段布局,但当我单击它们时,我得到了一个错误Android 如何解决此问题->;找不到显式活动类,android,android-intent,android-asynctask,android-json,Android,Android Intent,Android Asynctask,Android Json,我有一个来自JSON的带有列表视图的片段布局,但当我单击它们时,我得到了一个错误 06-13 13:17:58.492: E/AndroidRuntime(1542): FATAL EXCEPTION: main 06-13 13:17:58.492: E/AndroidRuntime(1542): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.yeftaandrea.
06-13 13:17:58.492: E/AndroidRuntime(1542): FATAL EXCEPTION: main
06-13 13:17:58.492: E/AndroidRuntime(1542): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.yeftaandrea.plesirsolo/com.yeftaandrea.plesirsolo.KaranganyarAttractionDetailFragment}; have you declared this activity in your AndroidManifest.xml?
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.app.Activity.startActivityForResult(Activity.java:3390)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.app.Activity.startActivityForResult(Activity.java:3351)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:848)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.support.v4.app.Fragment.startActivity(Fragment.java:878)
06-13 13:17:58.492: E/AndroidRuntime(1542): at com.yeftaandrea.plesirsolo.KaranganyarAttractionFragment$1.onItemClick(KaranganyarAttractionFragment.java:80)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.widget.AbsListView$1.run(AbsListView.java:3463)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.os.Handler.handleCallback(Handler.java:730)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.os.Handler.dispatchMessage(Handler.java:92)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.os.Looper.loop(Looper.java:137)
06-13 13:17:58.492: E/AndroidRuntime(1542): at android.app.ActivityThread.main(ActivityThread.java:5103)
06-13 13:17:58.492: E/AndroidRuntime(1542): at java.lang.reflect.Method.invokeNative(Native Method)
06-13 13:17:58.492: E/AndroidRuntime(1542): at java.lang.reflect.Method.invoke(Method.java:525)
06-13 13:17:58.492: E/AndroidRuntime(1542): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
06-13 13:17:58.492: E/AndroidRuntime(1542): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
06-13 13:17:58.492: E/AndroidRuntime(1542): at dalvik.system.NativeStart.main(Native Method)
这是我的源代码:
1.karanganyaratractionfragment
package com.yeftaandrea.plesirsolo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;
import com.yeftaandrea.plesirsolo.adapter.KaranganyarJsonAttractionAdapter;
public class KaranganyarAttractionFragment extends Fragment {
// URL to get contacts JSON
// JSON Node names
public static final String TAG_ID = "ID";
public static final String TAG_NAME = "Name";
public static final String TAG_ADDRESS = "Address";
public static final String TAG_PHONE = "Phone";
public static final String TAG_CITY = "City";
public static final String TAG_DESCRIPTION = "Description";
public static final String TAG_AKSESBILITAS = "Aksesbilitas";
public static final String TAG_Tiket = "Tiket";
public static final String TAG_FACILITIES = "Faclilities";
public static final String TAG_LANTITUDE = "Lantitude";
public static final String TAG_LONGTITUDE = "Longtitude";
public static final String TAG_PICPATH = "PicPath";
// Hashmap for ListView
ArrayList<HashMap<String, String>> attractionList;
ListView list;
KaranganyarJsonAttractionAdapter adapter;
// Progress Dialog
private ProgressDialog pDialog;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_attraction_karanganyar, container, false);
list = (ListView) rootView.findViewById(R.id.list);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
String name = ((TextView) view.findViewById(R.id.Name))
.getText().toString();
String address = ((TextView) view.findViewById(R.id.Address))
.getText().toString();
String phone = ((TextView) view.findViewById(R.id.Phone))
.getText().toString();
Intent i = new Intent(getActivity().getApplicationContext(), KaranganyarAttractionDetailFragment.class);
i.putExtra("TAG_ID", id);
i.putExtra("TAG_NAME", name);
i.putExtra("TAG_ADDRESS", address);
i.putExtra("TAG_PHONE", phone);
startActivity(i);
}
});
// Calling async task to get json
new LoadTask().execute();
return rootView;
}
public void loadAttraction(){
attractionList = new
ArrayList<HashMap<String, String>>();
JSONParser parser = new JSONParser();
List<NameValuePair> params = new ArrayList<NameValuePair>();
try {
JSONArray attraction = parser.makeHttpRequestArray("http://plesirsolo.meximas.com/plesir/attraction/wisata/karanganyar/", "GET", params);
// JSONArray attraction = parser.makeHttpRequestArray("http://192.168.56.1:8080/examples/json.html", "GET", params);
// looping through All messages
if(attraction!=null){
for (int i = 0; i < attraction.length(); i++) {
JSONObject c = attraction.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(TAG_ID);
String nama = c.getString(TAG_NAME);
String address = c.getString(TAG_ADDRESS);
String phone = c.getString(TAG_PHONE);
String picPath = c.getString(TAG_PICPATH);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_ID, id);
map.put(TAG_NAME, nama);
map.put(TAG_ADDRESS, address);
map.put(TAG_PHONE, phone);
map.put(TAG_PICPATH, picPath);
// adding HashList to ArrayList
attractionList.add(map);
}
adapter = new KaranganyarJsonAttractionAdapter(
getActivity(), attractionList);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
private class LoadTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Loading Attraction ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
loadAttraction();
return null;
}
@Override
protected void onPostExecute(Void result) {
// dismiss the dialog after getting all products
pDialog.dismiss();
super.onPostExecute(result);
list.setAdapter(adapter);
Log.i("JSON", "TEST");
Log.i("JSON", attractionList.toString());
}
}
}
package com.yeftandrea.plesirsolo;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入org.apache.http.NameValuePair;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ListView;
导入android.widget.TextView;
导入com.yeftandrea.plesirsoo.adapter.KaranganyarJsonAttractionAdapter;
公共类KaranganyarAttractionFragment扩展了Fragment{
//获取联系人JSON的URL
//JSON节点名称
公共静态最终字符串标记\u ID=“ID”;
公共静态最终字符串标记_NAME=“NAME”;
公共静态最终字符串TAG_ADDRESS=“ADDRESS”;
公共静态最终字符串TAG_PHONE=“PHONE”;
公共静态最终字符串TAG_CITY=“CITY”;
公共静态最终字符串标记\u DESCRIPTION=“DESCRIPTION”;
公共静态最终字符串标记_AKSESBILITAS=“AKSESBILITAS”;
公共静态最终字符串标记_Tiket=“Tiket”;
公共静态最终字符串TAG_FACILITIES=“Faclilities”;
公共静态最终字符串标记_LANTITUDE=“LANTITUDE”;
公共静态最终字符串标记_longtude=“longtude”;
公共静态最终字符串标记_PICPATH=“PICPATH”;
//ListView的Hashmap
ArrayList吸引列表;
列表视图列表;
KaranganyarJsonAttractionAdapter适配器;
//进度对话框
私人对话;
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u attraction\u karanganyar,容器,假);
list=(ListView)rootView.findViewById(R.id.list);
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
//TODO自动生成的方法存根
字符串名称=((TextView)view.findViewById(R.id.name))
.getText().toString();
字符串地址=((TextView)view.findViewById(R.id.address))
.getText().toString();
字符串phone=((TextView)view.findViewById(R.id.phone))
.getText().toString();
Intent i=新的Intent(getActivity().getApplicationContext(),KaranganyarAttractionDetailFragment.class);
i、 putExtra(“标签ID”,ID);
i、 putExtra(“标签名称”,名称);
i、 putExtra(“标签地址”,地址);
i、 putExtra(“标签电话”,电话);
星触觉(i);
}
});
//调用异步任务以获取json
新建LoadTask().execute();
返回rootView;
}
公共吸引物(){
attractionList=新建
ArrayList();
JSONParser=新的JSONParser();
List params=new ArrayList();
试一试{
JSONArray=parser.makeHttpRequestArray(“http://plesirsolo.meximas.com/plesir/attraction/wisata/karanganyar/“,”GET“,params);
//JSONArray=parser.makeHttpRequestArray(“http://192.168.56.1:8080/examples/json.html“,”GET“,params);
//循环浏览所有消息
if(吸引力!=null){
对于(int i=0;ivalue
地图放置(标签标识,标识);
地图放置(标签名称,nama);
地图放置(标签地址,地址);
地图放置(标签电话,电话);
map.put(TAG_PICPATH,PICPATH);
//将哈希列表添加到ArrayList
属性列表。添加(映射);
}
适配器=新的Karanganyarjsonattraction适配器(
getActivity(),attractionList);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
私有类LoadTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(getActivity());
pDialog.setMessage(“正在加载吸引…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…参数){
负载吸引();
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
//获取所有产品后关闭对话框
pDialog.disclose();
super.onPostExecute(结果);
list.setAdapter(适配器);
Log.i(“JSON”、“TEST”);
Log.i(“JSON”,attractionList.toString());
}
}
}
private ArrayList<HashMap<String, String>> data;
public ImageLoader imageLoader;
private Context context;
public String imageBaseDirectory = "http://plesirsolo.meximas.com/plesir/images/wisata/";
public KaranganyarJsonAttractionAdapter(Context context,
ArrayList<HashMap<String, String>> attractionList) {
this.data = attractionList;
this.context = context;
imageLoader = new ImageLoader(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if(data != null)
return data.size();
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_row2, null);
}
TextView Name = (TextView)convertView.findViewById(R.id.Name); // name
TextView Address = (TextView)convertView.findViewById(R.id.Address); // address
TextView Phone = (TextView)convertView.findViewById(R.id.Phone); // phone
ImageView PicPath = (ImageView)convertView.findViewById(R.id.list_image); // thumb image
HashMap<String, String> attraction = new HashMap<String, String>();
attraction = data.get(position);
Log.i("JSON", attraction.toString());
// Setting all values in listview
Name.setText(attraction.get(KaranganyarAttractionFragment.TAG_NAME));
Address.setText(attraction.get(KaranganyarAttractionFragment.TAG_ADDRESS));
Phone.setText(attraction.get(KaranganyarAttractionFragment.TAG_PHONE));
Log.i("JSON", attraction.get(KaranganyarAttractionFragment.TAG_NAME));
imageLoader.DisplayImage(imageBaseDirectory+attraction.get(KaranganyarAttractionFragment.TAG_PICPATH), position, PicPath);
return convertView;
}
// Hashmap for ListView
ArrayList<HashMap<String, String>> attractionList;
ListView list;
KaranganyarJsonAttractionDetailAdapter adapter;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_attraction_karanganyar_detail, container, false);
// Calling async task to get json
new LoadTask().execute();
return rootView;
}
public void loadAttraction(){
attractionList = new
ArrayList<HashMap<String, String>>();
JSONParser parser = new JSONParser();
List<NameValuePair> params = new ArrayList<NameValuePair>();
try {
JSONArray attraction = parser.makeHttpRequestArray("http://plesirsolo.meximas.com/plesir/attraction/wisata/karanganyar/", "GET", params);
// JSONArray attraction = parser.makeHttpRequestArray("http://192.168.56.1:8080/examples/json.html", "GET", params);
// looping through All messages
if(attraction!=null){
for (int i = 0; i < attraction.length(); i++) {
JSONObject c = attraction.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(TAG_ID);
String nama = c.getString(TAG_NAME);
String address = c.getString(TAG_ADDRESS);
String phone = c.getString(TAG_PHONE);
String picPath = c.getString(TAG_PICPATH);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_ID, id);
map.put(TAG_NAME, nama);
map.put(TAG_ADDRESS, address);
map.put(TAG_PHONE, phone);
map.put(TAG_PICPATH, picPath);
// adding HashList to ArrayList
attractionList.add(map);
}
adapter = new KaranganyarJsonAttractionDetailAdapter(
getActivity(), attractionList);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
private class LoadTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
loadAttraction();
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
list.setAdapter(adapter);
Log.i("JSON", "TEST");
Log.i("JSON", attractionList.toString());
}
}
private ArrayList<HashMap<String, String>> data;
public ImageLoader imageLoader;
private Context context;
public String imageBaseDirectory = "http://plesirsolo.meximas.com/plesir/images/wisata/";
public KaranganyarJsonAttractionDetailAdapter(Context context,
ArrayList<HashMap<String, String>> attractionList) {
this.data = attractionList;
this.context = context;
imageLoader = new ImageLoader(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if(data != null)
return data.size();
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.fragment_attraction_karanganyar_detail, null);
}
TextView Name = (TextView)convertView.findViewById(R.id.Name); // name
TextView Address = (TextView)convertView.findViewById(R.id.Address); // address
TextView Phone = (TextView)convertView.findViewById(R.id.Phone); // phone
ImageView PicPath = (ImageView)convertView.findViewById(R.id.list_image); // thumb image
HashMap<String, String> attraction = new HashMap<String, String>();
attraction = data.get(position);
Log.i("JSON", attraction.toString());
// Setting all values in listview
Name.setText(attraction.get(KaranganyarAttractionDetailFragment.TAG_NAME));
Address.setText(attraction.get(KaranganyarAttractionDetailFragment.TAG_ADDRESS));
Phone.setText(attraction.get(KaranganyarAttractionDetailFragment.TAG_PHONE));
Log.i("JSON", attraction.get(KaranganyarAttractionDetailFragment.TAG_NAME));
imageLoader.DisplayImage(imageBaseDirectory+attraction.get(KaranganyarAttractionDetailFragment.TAG_PICPATH), position, PicPath);
return convertView;
}
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.yeftaandrea.plesirsolo.SplashScreen"
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="com.yeftaandrea.plesirsolo.MainActivity"
android:label="@string/app_name" >
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<activity
android:name=".KaranganyarAttractionDetailFragment">
</activity>
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.yeftaandrea.plesirsolo.SplashScreen"
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=".KaranganyarAttractionDetailFragment">
</activity>
<activity
android:name="com.yeftaandrea.plesirsolo.MainActivity"
android:label="@string/app_name" >
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<activity android:name=".KaranganyarAttractionDetailFragment"></activity>
<application
android:name="com.yeftaandrea.plesirsolo"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >