Android使用GridView试图调用虚拟方法集适配器 这是我在GridView中显示图像和文本的活动 我在其他一些活动中使用了意图 setAdapter方法出现错误 下面是我的适配器 这是我的适配器,我不知道哪里出了问题 启动此活动时,我的应用程序崩溃

Android使用GridView试图调用虚拟方法集适配器 这是我在GridView中显示图像和文本的活动 我在其他一些活动中使用了意图 setAdapter方法出现错误 下面是我的适配器 这是我的适配器,我不知道哪里出了问题 启动此活动时,我的应用程序崩溃,android,gridview,listadapter,Android,Gridview,Listadapter,致命异常:主 流程:com.nusecond.suredeal.app.suredeal,PID:25273 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.nusecond.suredeal.app.suredeal/com.nusecond.suredeal.app.suredeal.activity.Promo}: java.lang.NullPointerException:尝试调用虚拟方法“void” android.widget

致命异常:主 流程:com.nusecond.suredeal.app.suredeal,PID:25273 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.nusecond.suredeal.app.suredeal/com.nusecond.suredeal.app.suredeal.activity.Promo}: java.lang.NullPointerException:尝试调用虚拟方法“void” android.widget.GridView.setAdapter(android.widget.ListAdapter)在 空对象引用 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 位于android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:148) 位于android.app.ActivityThread.main(ActivityThread.java:5417) 位于java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 原因:java.lang.NullPointerException:尝试调用虚拟机 方法无效 android.widget.GridView.setAdapter(android.widget.ListAdapter)在 空对象引用 在 com.nusecond.suredeal.app.suredeal.activity.Promo.onCreate(Promo.java:36) 位于android.app.Activity.performCreate(Activity.java:6237) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 位于android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:148) 位于android.app.ActivityThread.main(ActivityThread.java:5417) 位于java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)


这是我的错误日志。谁能帮我解决这个问题。

试试这个

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.nusecond.suredeal.app.R;
import com.nusecond.suredeal.app.suredeal.activity.MainActivity;
import com.nusecond.suredeal.app.suredeal.activity.Promo;

/**
 * Created by ns2 on 2/4/16.
 */
public class CustomPromoAdapter extends BaseAdapter{
    ImageView imageView;
    TextView textView;
    String [] result;
    Context context;
    int [] imageId;
    private static LayoutInflater inflater=null;
    public CustomPromoAdapter(Promo promo, String[] programNameList, int[] programImages) {
        // TODO Auto-generated constructor stub
        result=programNameList;
        context=promo;
        imageId=programImages;
        inflater = ( LayoutInflater )context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

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

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

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View view;
        view=inflater.inflate(R.layout.promo_gridlist,null);
        textView=(TextView)view.findViewById(R.id.textView1);
        imageView=(ImageView)view.findViewById(R.id.imageView1);
        imageView.setImageResource(imageId[position]);
        textView.setText(imageId[position]);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "You Clicked " + result[position], Toast.LENGTH_LONG).show();
            }
        });
        return view;
    }
}

将适配器构造函数的第一个参数更改为context,而不是在activity_main.xml文件中检查gridView1。根据stacktrace,您的gridview(gv)为空。是的,老板我的Activity_main.xml指向其他布局………谢谢
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.nusecond.suredeal.app.R;
import com.nusecond.suredeal.app.suredeal.activity.MainActivity;
import com.nusecond.suredeal.app.suredeal.activity.Promo;

/**
 * Created by ns2 on 2/4/16.
 */
public class CustomPromoAdapter extends BaseAdapter{
    ImageView imageView;
    TextView textView;
    String [] result;
    Context context;
    int [] imageId;
    private static LayoutInflater inflater=null;
    public CustomPromoAdapter(Promo promo, String[] programNameList, int[] programImages) {
        // TODO Auto-generated constructor stub
        result=programNameList;
        context=promo;
        imageId=programImages;
        inflater = ( LayoutInflater )context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

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

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

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View view;
        view=inflater.inflate(R.layout.promo_gridlist,null);
        textView=(TextView)view.findViewById(R.id.textView1);
        imageView=(ImageView)view.findViewById(R.id.imageView1);
        imageView.setImageResource(imageId[position]);
        textView.setText(imageId[position]);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "You Clicked " + result[position], Toast.LENGTH_LONG).show();
            }
        });
        return view;
    }
}
 CustomPromoAdapter adapter = new CustomPromoAdapter(this,programNameList,programImages)
    gv.setAdapter(adapter);