J'ai sauté 32 images !L'application fait peut-être trop de travail sur son thread principal, puis EXCEPTION FATALE :principal

StackOverflow https://stackoverflow.com//questions/23001873

Question

Je suis nouveau dans la programmation Android.Je développe une application Android.DashboardGridActivity est une activité principale.Cette activité devrait afficher une vue en grille au lancement de cette application.Voici les fichiers de mon application :

Tableau de bordGridActivité :

public class DashboardGridActivity extends Activity {

GridView myDashboard;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dashboard_grid);
    myDashboard = (GridView)findViewById(R.id.dashboard);
    myDashboard.setAdapter(new DashboardAdapter(this));

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.dashboard_grid, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
  }
}

class ViewHolder
{
    ImageView myItem;
    ViewHolder(View v)
    {
        myItem = (ImageView) v.findViewById(R.id.imageView1);
    }
}

class DashboardItems
{
    int imageID;
    String itemName;
    DashboardItems(int imageID, String itemName)
    {
        this. imageID=imageID;
        this.itemName= itemName;
    }
}

class DashboardAdapter extends BaseAdapter
{
    ArrayList<DashboardItems> dashboardImages;
    Context context;
    DashboardAdapter(Context context)
    {
        dashboardImages = new ArrayList<DashboardItems>();
        Resources res = context.getResources();
        String[] tempDashItems = res.getStringArray(R.array.dashboard_names);
        int[] dashImages = {R.drawable.apartments, R.drawable.atms, R.drawable.banks, R.drawable.book_stores, R.drawable.car_rentals, R.drawable.furniture_shops, R.drawable.gas_stations, R.drawable.gyms, R.drawable.malls, R.drawable.mobile_shops, R.drawable.pharmacy, R.drawable.pizza_places, R.drawable.postal_services, R.drawable.restaurants, R.drawable.subs_burgers, R.drawable.supermarkets, R.drawable.theatres};
        for(int i=0;i<10;i++)
        {
            DashboardItems tempDash = new DashboardItems(dashImages[i],tempDashItems[i]);
            dashboardImages.add(tempDash);
        }
    }
@Override
public int getCount() {
    return dashboardImages.size();
}

@Override
public Object getItem(int i) {
    return dashboardImages.get(i);
}

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

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    View row= view;
    ViewHolder holder = null;
    if(row==null)
    {
        LayoutInflater inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(R.layout.single_item, viewGroup, false);
        holder=new ViewHolder(row);
        row.setTag(holder);
    }
    else
    {
        holder = (ViewHolder) row.getTag();
    }
    DashboardItems temp = dashboardImages.get(i);
    holder.myItem.setImageResource(temp.imageID);
    return row;
  }
}

ativity_dashboard_grid.xml :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="asm.offcampusresources.app.OffCampusResourcesActivity">


<GridView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/dashboard"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentBottom="true"
    android:numColumns="auto_fit"
    android:horizontalSpacing="10dp"
    android:verticalSpacing="10dp"
    android:columnWidth="120dp"
    android:stretchMode="spacingWidthUniform"/>

</RelativeLayout>

élément_single.xml :

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

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:contentDescription="@string/desc"/>

</RelativeLayout>

Lorsque j'essaie de l'exécuter sur Emulator, le message "Malheureusement, DashboardGridActivity a cessé de fonctionner"

Dans LogCat, je reçois les messages suivants :

    04-10 20:53:37.901: I/Choreographer(1144): Skipped 32 frames!  The application may be doing too much work on its main thread.
04-10 20:53:38.031: D/AndroidRuntime(1144): Shutting down VM
04-10 20:53:38.031: W/dalvikvm(1144): threadid=1: thread exiting with uncaught exception (group=0xb2a2dba8)
04-10 20:53:38.291: D/dalvikvm(1144): GC_FOR_ALLOC freed 76K, 5% free 3131K/3280K, paused 108ms, total 109ms
04-10 20:53:38.301: E/AndroidRuntime(1144): FATAL EXCEPTION: main
04-10 20:53:38.301: E/AndroidRuntime(1144): Process: asm.offcampusresdemo, PID: 1144
04-10 20:53:38.301: E/AndroidRuntime(1144): java.lang.NullPointerException
04-10 20:53:38.301: E/AndroidRuntime(1144):     at asm.offcampusresdemo.DashboardAdapter.getView(DashboardGridActivity.java:118)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.AbsListView.obtainView(AbsListView.java:2263)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.GridView.onMeasure(GridView.java:1044)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.View.measure(View.java:16497)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.Choreographer.doFrame(Choreographer.java:544)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.os.Handler.handleCallback(Handler.java:733)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.os.Handler.dispatchMessage(Handler.java:95)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.os.Looper.loop(Looper.java:136)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at android.app.ActivityThread.main(ActivityThread.java:5017)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at java.lang.reflect.Method.invokeNative(Native Method)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at java.lang.reflect.Method.invoke(Method.java:515)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-10 20:53:38.301: E/AndroidRuntime(1144):     at dalvik.system.NativeStart.main(Native Method)
04-10 20:53:53.171: I/Process(1144): Sending signal. PID: 1144 SIG: 9
04-10 20:54:03.361: D/AndroidRuntime(1169): Shutting down VM
04-10 20:54:03.361: W/dalvikvm(1169): threadid=1: thread exiting with uncaught exception (group=0xb2a2dba8)
04-10 20:54:03.471: D/dalvikvm(1169): GC_FOR_ALLOC freed 79K, 5% free 3131K/3284K, paused 40ms, total 43ms
04-10 20:54:03.481: E/AndroidRuntime(1169): FATAL EXCEPTION: main
04-10 20:54:03.481: E/AndroidRuntime(1169): Process: asm.offcampusresdemo, PID: 1169
04-10 20:54:03.481: E/AndroidRuntime(1169): java.lang.NullPointerException
04-10 20:54:03.481: E/AndroidRuntime(1169):     at asm.offcampusresdemo.DashboardAdapter.getView(DashboardGridActivity.java:118)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.AbsListView.obtainView(AbsListView.java:2263)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.GridView.onMeasure(GridView.java:1044)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.View.measure(View.java:16497)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.Choreographer.doFrame(Choreographer.java:544)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.os.Handler.handleCallback(Handler.java:733)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.os.Handler.dispatchMessage(Handler.java:95)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.os.Looper.loop(Looper.java:136)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at android.app.ActivityThread.main(ActivityThread.java:5017)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at java.lang.reflect.Method.invokeNative(Native Method)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at java.lang.reflect.Method.invoke(Method.java:515)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-10 20:54:03.481: E/AndroidRuntime(1169):     at dalvik.system.NativeStart.main(Native Method)
04-10 20:54:06.321: I/Process(1169): Sending signal. PID: 1169 SIG: 9

S'il vous plaît, suggérez-moi comment résoudre ce problème

Était-ce utile?

La solution

votre domaine context dans ton DashboardAdapter est null

vous devez vous assurer de l'attribuer dans votre constructeur, comme ceci :

Context mContext = null;

DashboardAdapter(Context context)
{
    mContext = context;
    dashboardImages = new ArrayList<DashboardItems>();
    Resources res = context.getResources();
    String[] tempDashItems = res.getStringArray(R.array.dashboard_names);
    int[] dashImages = {R.drawable.apartments, R.drawable.atms, R.drawable.banks, R.drawable.book_stores, R.drawable.car_rentals, R.drawable.furniture_shops, R.drawable.gas_stations, R.drawable.gyms, R.drawable.malls, R.drawable.mobile_shops, R.drawable.pharmacy, R.drawable.pizza_places, R.drawable.postal_services, R.drawable.restaurants, R.drawable.subs_burgers, R.drawable.supermarkets, R.drawable.theatres};
    for(int i=0;i<10;i++)
    {
        DashboardItems tempDash = new DashboardItems(dashImages[i],tempDashItems[i]);
        dashboardImages.add(tempDash);
    }
}

Note:J'ai renommé le champ context à mContext il est donc plus évident qu'il s'agit d'un champ membre, et il ne sera donc pas masqué par l'argument de la méthode

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top