我目前正试图将DSLV库实现到我的ListFragment类中,但我发现了错误
04-28 17:43:13.876: E/AndroidRuntime(17113): FATAL EXCEPTION: main
04-28 17:43:13.876: E/AndroidRuntime(17113): java.lang.NoClassDefFoundError: com.main.tab.FavoritesTab$1
04-28 17:43:13.876: E/AndroidRuntime(17113): at com.main.tab.FavoritesTab.<init>(FavoritesTab.java:43)
04-28 17:43:13.876: E/AndroidRuntime(17113): at com.main.transit.MainActivity.onCreate(MainActivity.java:85)
04-28 17:43:13.876: E/AndroidRuntime(17113): at android.app.Activity.performCreate(Activity.java:5104)
04-28 17:43:13.876: E/AndroidRuntime(17113): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-28 17:43:13.876: E/AndroidRuntime(17113): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
04-28 17:43:13.876: E/AndroidRuntime(17113): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357)
04-28 17:43:13.876: E/AndroidRuntime(17113): at android.app.ActivityThread.access$600(ActivityThread.java:153)
04-28 17:43:13.876: E/AndroidRuntime(17113): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
04-28 17:43:13.876: E/AndroidRuntime(17113): at android.os.Handler.dispatchMessage(Handler.java:99)
04-28 17:43:13.876: E/AndroidRuntime(17113): at android.os.Looper.loop(Looper.java:137)
04-28 17:43:13.876: E/AndroidRuntime(17113): at android.app.ActivityThread.main(ActivityThread.java:5226)
04-28 17:43:13.876: E/AndroidRuntime(17113): at java.lang.reflect.Method.invokeNative(Native Method)
04-28 17:43:13.876: E/AndroidRuntime(17113): at java.lang.reflect.Method.invoke(Method.java:511)
04-28 17:43:13.876: E/AndroidRuntime(17113): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
04-28 17:43:13.876: E/AndroidRuntime(17113): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
04-28 17:43:13.876: E/AndroidRuntime(17113): at dalvik.system.NativeStart.main(Native Method)
根据错误,似乎第43行导致了java.lang.NoClassDefFoundError:。似乎是DropListener的声明导致了这个问题。它也可能是由我在xml文件中的声明引起的吗?这是源代码:
public class FavoritesTab extends ListFragment
{
private JazzAdapter adapter;
private ArrayList<JazzArtist> mArtists;
private String[] mArtistNames = {"Brighouse Stn Bay 7", "Nb No.3 Rd Fs Francis Rd", "Sb Westbrook Mall Fs University--"};
private String[] mArtistAlbums = {"402: 1:40pm, 2:10pm\n403: 1:39pm, 2:01pm, 2:22pm\n404: 1:46pm, 2:16pm\n410: 1:39pm, 1:50pm, 2:09pm, 2:19pm, 2:23pm\n",
"403: 1:53pm, 2:13pm, 2:33pm\n",
"025: 1:38pm, 1:50pm, 2:02pm, 2:14pm, 2:26pm\n033: 2:01pm, 2:31pm\n041: 1:45pm, 2:08pm, 2:25pm\n"};
private String[] mStops = {"56549", "56616", "61598"};
private DragSortListView.DropListener onDrop =
new DragSortListView.DropListener() {
@Override
public void drop(int from, int to) {
JazzArtist item = adapter.getItem(from);
adapter.remove(item);
adapter.insert(item, to);
}
};
private DragSortListView.RemoveListener onRemove =
new DragSortListView.RemoveListener() {
@Override
public void remove(int which) {
adapter.remove(adapter.getItem(which));
}
};
/** Called when the activity is first created. */
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
MainActivity ma = (MainActivity) getActivity();
DragSortListView lv = (DragSortListView) getListView();
lv.setDropListener(onDrop);
lv.setRemoveListener(onRemove);
mArtists = new ArrayList<JazzArtist>();
for(int i=0; i<3; i++) {
JazzArtist ja = new JazzArtist();
ja.name = mArtistNames[i];
ja.albums = mArtistAlbums[i];
ja.stop_no = mStops[i];
mArtists.add(ja);
}
adapter = new JazzAdapter(mArtists);
setListAdapter(adapter);
//ma.refreshList();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.activity_favorites_tab, container, false);
return view;
}
private class JazzArtist {
public String name;
public String albums;
public String stop_no;
@Override
public String toString() {
return name;
}
}
private class ViewHolder {
public TextView albumsView;
public TextView stopNo;
}
private class JazzAdapter extends ArrayAdapter<JazzArtist> {
public JazzAdapter(List<JazzArtist> artists) {
super(getActivity(), R.layout.jazz_artist_list_item,
R.id.artist_name_textview, artists);
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
if (v != convertView && v != null) {
ViewHolder holder = new ViewHolder();
TextView tv = (TextView) v.findViewById(R.id.artist_albums_textview);
TextView tv2 = (TextView) v.findViewById(R.id.stop_number_textview);
holder.albumsView = tv;
holder.stopNo = tv2;
v.setTag(holder);
}
ViewHolder holder = (ViewHolder) v.getTag();
String albums = getItem(position).albums;
String stop_no = "Bus Stop " + getItem(position).stop_no;
holder.albumsView.setText(albums);
holder.stopNo.setText(stop_no);
return v;
}
}
}
编辑-事实证明,我没有正确导入库。然而,我现在面临一个新问题。我发现了错误
04-28 21:19:34.786: E/AndroidRuntime(32514): FATAL EXCEPTION: main
04-28 21:19:34.786: E/AndroidRuntime(32514): android.view.InflateException: Binary XML file line #8: Error inflating class com.mobeta.android.dslv.DragSortListView
以下是我的XML布局:
<?xml version="1.0" encoding="utf-8"?>
<com.mobeta.android.dslv.DragSortListView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dslv="http://schemas.android.com/apk/res-auto"
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="7dp"
android:paddingBottom="0dp"
android:paddingLeft="0dp"
android:layout_margin="0dp"
android:dividerHeight="5dp"
dslv:drag_enabled="true"
dslv:collapsed_height="2dp"
dslv:drag_scroll_start="0.33"
dslv:max_drag_scroll_speed="0.5"
dslv:float_alpha="0.6"
dslv:slide_shuffle_speed="0.3"
dslv:track_drag_sort="false"
dslv:use_default_controller="true"
dslv:sort_enabled="false"
dslv:remove_enabled="true"
dslv:remove_mode="flingRemove"
android:background="#E5E5E5" />
如果我更改行“xmlns:android=”http://schemas.android.com/apk/res/android“”到“xmlns:dslv=”http://schemas.android.com/apk/res/com.mobeta.android.demodslv“”时,我将得到一个“找不到资源ifentifier”错误。
你使用哪个版本的android?ListFragment可以在版本11中使用。你必须添加“支持”。v4。罐子。
DragSortListView似乎没有作为库添加到项目中。并非总是需要在项目库中包含jar。有时整个项目可以用作库。通过检查属性,检查演示是否包含DSLV项目--
您可能有错误的网址。应该是:http://schemas.android.com/apk/lib/com.mobeta.android.dslv您正在使用“com.mobeta.android.demodslv”访问演示项目
DragSortListView(DSLV)是Android ListView的一个扩展,支持拖拽排序和左右滑动删除功能。重写了TouchInterceptor(TI)类来提供更加优美的拖拽动画效果。 DSLV主要特性: 完美的拖拽支持; 在拖动时提供更平滑的滚动列表滚动; 支持每个ListItem高度的多样性 公开startDrag()和stopDrag()方法; 有公开的接口可以自定义拖动
我的问题是,当我把这段代码放在一个活动中时,它工作得很好,但当我试图使用片段时,它会生成错误这就是显示的错误: 24号线是:
我有一个抽屉布局片段(在主活动中),它显示了一个可扩展的列表,当我点击扩展项目的子项时,会出现一个弹出窗口。这个具有自定义布局的弹出窗口包含文本视图、列表视图和2个按钮。 我给列表视图提供了id:,并在onCreateView函数中从视图组返回空值,如下所示: 并使类扩展的片段不是列表片段 我执行了前面的3个步骤,以避免出现“Content has view with id attribute'a
我在活动中定义了一个静态ArrayList,其中有几个片段使用它。此ArrayList有时会被修改。 这是不好的做法吗?我应该改用bundles/SQLite吗?
我有一个片段显示来自API的数据,但我不想每次调用该片段时都调用API。所以我从一个不同的类进行api调用,并在片段中调用一个方法来更新UI(textViews),但我得到了textViews的null异常,但那里的数据是100% 如果我尝试硬编码textview.settext(“hello”),它可以工作…
此时,Frag2在堆栈上,是唯一可见的片段。我使用了replace和addToBackStack,因为我需要后退导航。我的问题是,当我在Frag2内旋转屏幕时,活动中的super.oncreate(savedInstanceState)方法调用frag1的构造函数。 在用户按下后退按钮之前,有没有什么方法可以避免调用Frag1的构造函数?