【问题标题】:Android - Java NullPointerExceptionAndroid - Java NullPointerException
【发布时间】:2015-01-06 18:24:48
【问题描述】:

我正在尝试制作一个简单的应用程序,但我遇到了这个令人讨厌的错误,我不知道为什么...

01-06 18:05:04.734: E/AndroidRuntime(1102): FATAL EXCEPTION: main
01-06 18:05:04.734: E/AndroidRuntime(1102): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.coindroid/com.example.coindroid.EUActivity}: java.lang.NullPointerException
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.os.Looper.loop(Looper.java:137)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.app.ActivityThread.main(ActivityThread.java:5041)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at java.lang.reflect.Method.invokeNative(Native Method)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at java.lang.reflect.Method.invoke(Method.java:511)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at dalvik.system.NativeStart.main(Native Method)
01-06 18:05:04.734: E/AndroidRuntime(1102): Caused by: java.lang.NullPointerException
01-06 18:05:04.734: E/AndroidRuntime(1102):     at com.example.coindroid.EUActivity.onCreate(EUActivity.java:30)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.app.Activity.performCreate(Activity.java:5104)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
01-06 18:05:04.734: E/AndroidRuntime(1102):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
01-06 18:05:04.734: E/AndroidRuntime(1102):     ... 11 more

所以,我的问题似乎在第 30 行,即:list.setAdapter(new EUAdapter(this)); 怎么了 ? 我的活动是这样的:

    package com.example.coindroid;

    import java.util.ArrayList;
import android.app.Activity; 
import android.content.Context; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView;

    public class EUActivity extends Activity {      

ListView list;

        @Override   protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);         
setContentView(R.layout.activity_eu);       
list = (ListView) findViewById(R.layout.activity_eu);

                    list.setAdapter(new EUAdapter(this));        
}

        }

             class SingleRow {  String title;   String description;     int image;  SingleRow(String title, String description, int image)  {       this.title = title;         this.description = description;         this.image = image;     } } class EUAdapter extends BaseAdapter{

        ArrayList<SingleRow> list;  Context context;    EUAdapter(Context c)    {       context = c;        list = new ArrayList<SingleRow>();      Resources res = c.getResources();       String[] titles = res.getStringArray(R.array.titles);       String[] descriptions = res.getStringArray(R.array.description);        int[] images = {R.drawable.queenvictoria1841jpg};
                    for(int i=0;i<1;i++)        {           list.add(new SingleRow(titles[i], descriptions[i], images[i]));         }
                }
                @Override   public int getCount() {
                    return list.size();     }

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

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

        @Override   public View getView(int i, View view, ViewGroup viewGroup) {


                    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);       View row
    = inflater.inflate(R.layout.single_row, viewGroup, false);
                    TextView title = (TextView)row.findViewById(R.id.name);         TextView description = (TextView)row.findViewById(R.id.year);       ImageView image = (ImageView)row.findViewById(R.id.imageView1);
                    SingleRow temp = list.get(i);
                    title.setText(temp.title);      description.setText(temp.description);      image.setImageResource(temp.image);
                    return row;     }   
             }

提前谢谢大家!

【问题讨论】:

  • 欢迎使用 Stack Overflow。要发布代码示例,请使用编辑器菜单中的{} 按钮,而不是创建引用的"。它们都创建灰色背景,但只有{} 会保留行分隔符,并会添加正确的格式。请记住,编写良好且格式正确的问题更有可能得到回答(有些人如果看到作者没有付出足够的努力来创建问题,他们往往会跳过问题)。
  • 如果你需要别人的帮助,我想你必须修复格式
  • EUActivity.java 中的第 30 行是什么?
  • 说真的,您在发布问题时做了什么。我试图编辑它,它完全搞砸了。感谢上帝@Lal 在我之前编辑了它。 :D
  • 我在编辑时也完全糊涂了,半途而废.. @Rohit5k2

标签: java android exception null


【解决方案1】:
list = (ListView) findViewById(R.layout.activity_eu);

您的list 为空。你找不到任何带有R.layout id 的东西。在activity_eu 布局中使用与您的列表视图相对应的R.id id。

【讨论】:

    【解决方案2】:

    您需要在适配器的 getview 方法中返回视图而不是行

    View view = inflater.---

    【讨论】:

      【解决方案3】:

      正如@laalto 提到的

      替换

      list = (ListView) findViewById(R.layout.activity_eu);
      

      list = (ListView) findViewById(R.id.activity_eu);
      

      当您通过来自 R.java 的 findViewByID() 的 id 查找视图时

      【讨论】:

        猜你喜欢
        • 2016-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多