gpt4 book ai didi

java - Android - 在 UIL 中使用之前,ImageLoader 必须通过配置初始化

转载 作者:IT老高 更新时间:2023-10-28 20:54:19 26 4
gpt4 key购买 nike

我得到了错误:

ImageLoader must be init with configuration before using is the error from Illegal State Exception.

我在将 gridview 放在 fragment 中的方法中努力显示图像。至于我的理解,imageLoader 应该首先通过扩展将扩展 BaseActivity 的类 AbsListViewBaseActivity 来初始化。

这两个类用于初始化imageLoader。我把流程搞砸了,我在运行时遇到错误,两天内一直在处理这个问题。我将包含 LogCat 错误。

我自己的版本

--主类

import com.nostra13.universalimageloader.core.ImageLoader;
import com.folder.folder.AbsListViewBaseActivity;

public class CollectionDemoActivity extends FragmentActivity{

assignImageLoader newAssign;
static AbsListViewBaseActivity absList;
static ImageAdapter m3;

Oncreate()
{
newAssign = assignImageLoader;
m3 = ImageAdapter();
((GridView) absList.listView).setAdapter(m3);
}
}


/**
* A dummy fragment representing a section of the app, but that simply displays dummy text.
*/

public static class DemoObjectFragment extends Fragment {

public static final String ARG_OBJECT = "object";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.ac_image_grid, container, false);

List<Menu> itemsDatabase = db.getItemsAsArray("items");
List<String> items = new ArrayList<String>();

for (Menu cn : itemsDatabase) {

HashMap<String, String> map = new HashMap<String, String>();
items.add(cn.getImagePath().toString());
values2.add(map);
}

imageUrls = items.toArray(new String[items.size()]);

options2 = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisc(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();

absList.listView = (GridView)rootView.findViewById(R.id.gridview);

((GridView) absList.listView).setAdapter(m3);
absList.listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//startImagePagerActivity(position);
//Toast.makeText(getBaseContext(), "Clieckeed", Toast.LENGTH_SHORT).show();
//Log.d("Inside Onclick:", view.toString());
}
});
return rootView;
}
}

class ImageAdapter extends BaseAdapter {

@Override
public int getCount() {
return imageUrls.length;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return position;
}

public View getView(final int position, View convertView, ViewGroup parent) {

View view = convertView;
final ViewHolder holder;

// Assign Values
holder.name.setText(values2.get(position).get(TAG_NAME2 ).toString());
holder.price.setText("Price: " + values2.get(position).get(TAG_PRICE2).toString());

holder.br.setStepSize(1);
holder.br.setFocusable(false);

Log.d("Image Path Value in GridViewdd: ", values2.get(position).get(TAG_IMAGE_NAME2).toString());

newAssign.getImageLoader("Image Path", holder.image, options2);

return view;
}

class ViewHolder {
public TextView name;
public TextView price;
public ImageView image;
public RatingBar br;
}
}

static class assignImageLoader extends AbsListViewBaseActivity{
static ImageLoader mg;

assignImageLoader()
{
mg = imageLoader;
}

public void getImageLoader(String path, ImageView img, DisplayImageOptions options)
{
imageLoader.displayImage(path, img, options);
}
}

程序的原始实现和流程

--主类

public class ImageGridActivity extends AbsListViewBaseActivity {

onCreate()
{
((GridView) listView).setAdapter(new ImageAdapter());
}

public class ImageAdapter extends BaseAdapter {

public View getView(final int position, View convertView, ViewGroup parent) {

imageLoader.displayImage(path, holder.image, options2);
}
}
}

--AbsListViewBaseActivity

public class AbsListViewBaseActivity extends BaseActivity {

protected static final String STATE_PAUSE_ON_SCROLL = "STATE_PAUSE_ON_SCROLL";
protected static final String STATE_PAUSE_ON_FLING = "STATE_PAUSE_ON_FLING";

public AbsListView listView;

protected boolean pauseOnScroll = false;
protected boolean pauseOnFling = true;

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
pauseOnScroll = savedInstanceState.getBoolean(STATE_PAUSE_ON_SCROLL, false);
pauseOnFling = savedInstanceState.getBoolean(STATE_PAUSE_ON_FLING, true);
}

@Override
public void onResume() {
super.onResume();
applyScrollListener();
}

private void applyScrollListener() {
listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));

}

@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(STATE_PAUSE_ON_SCROLL, pauseOnScroll);
outState.putBoolean(STATE_PAUSE_ON_FLING, pauseOnFling);
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem pauseOnScrollItem = menu.findItem(R.id.item_pause_on_scroll);
pauseOnScrollItem.setVisible(true);
pauseOnScrollItem.setChecked(pauseOnScroll);

MenuItem pauseOnFlingItem = menu.findItem(R.id.item_pause_on_fling);
pauseOnFlingItem.setVisible(true);
pauseOnFlingItem.setChecked(pauseOnFling);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.item_pause_on_scroll:
pauseOnScroll = !pauseOnScroll;
item.setChecked(pauseOnScroll);
applyScrollListener();
return true;

case R.id.item_pause_on_fling:
pauseOnFling = !pauseOnFling;
item.setChecked(pauseOnFling);
applyScrollListener();
return true;

default:
return super.onOptionsItemSelected(item);
}
}
}

基础 Activity

public abstract class BaseActivity extends Activity {

public ImageLoader imageLoader = ImageLoader.getInstance();

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
//Added in the code by me for handling the init error
imageLoader.init(ImageLoaderConfiguration.createDefault(getBaseContext()));

return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.item_clear_memory_cache:
imageLoader.clearMemoryCache();
return true;

case R.id.item_clear_disc_cache:
imageLoader.clearDiscCache();
return true;

default:
imageLoader.destroy();
return false;
}
}
}

Logcat:

07-19 11:28:26.909: E/AndroidRuntime(24023): FATAL EXCEPTION: main
07-19 11:28:26.909: E/AndroidRuntime(24023): java.lang.IllegalStateException: ImageLoader must be init with configuration before using
07-19 11:28:26.909: E/AndroidRuntime(24023): at com.nostra13.universalimageloader.core.ImageLoader.checkConfiguration(ImageLoader.java:325)
07-19 11:28:26.909: E/AndroidRuntime(24023): at com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:170)
07-19 11:28:26.909: E/AndroidRuntime(24023): at com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:134)
07-19 11:28:26.909: E/AndroidRuntime(24023): at com.jinisys.restoplusordering.CollectionDemoActivity$assignImageLoader.getImageLoader(CollectionDemoActivity.java:448)
07-19 11:28:26.909: E/AndroidRuntime(24023): at com.jinisys.restoplusordering.CollectionDemoActivity$ImageAdapter.getView(CollectionDemoActivity.java:424)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.widget.AbsListView.obtainView(AbsListView.java:2267)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.widget.GridView.onMeasure(GridView.java:1030)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.View.measure(View.java:15181)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.View.measure(View.java:15181)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1447)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.View.measure(View.java:15181)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.View.measure(View.java:15181)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.View.measure(View.java:15181)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-19 11:28:26.909: E/AndroidRuntime(24023): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.Choreographer.doFrame(Choreographer.java:525)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.os.Handler.handleCallback(Handler.java:615)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.os.Handler.dispatchMessage(Handler.java:92)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.os.Looper.loop(Looper.java:137)
07-19 11:28:26.909: E/AndroidRuntime(24023): at android.app.ActivityThread.main(ActivityThread.java:4745)
07-19 11:28:26.909: E/AndroidRuntime(24023): at java.lang.reflect.Method.invokeNative(Native Method)
07-19 11:28:26.909: E/AndroidRuntime(24023): at java.lang.reflect.Method.invoke(Method.java:511)
07-19 11:28:26.909: E/AndroidRuntime(24023): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-19 11:28:26.909: E/AndroidRuntime(24023): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-19 11:28:26.909: E/AndroidRuntime(24023): at dalvik.system.NativeStart.main(Native Method)

基于此方法:

ImageGallery

最佳答案

尝试在你的 onCreateView 中实现这个:

对于 Activity -

BaseActivity.imageLoader.init(ImageLoaderConfiguration.createDefault(getBaseCont‌​ext()));

对于 fragment -

ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(getActivity()));

关于java - Android - 在 UIL 中使用之前,ImageLoader 必须通过配置初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17737858/

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