【问题标题】:Unfortunately Myapp has stopped when i was launch My app in emulator using Eclipse不幸的是,当我使用 Eclipse 在模拟器中启动我的应用程序时,Myapp 已停止
【发布时间】:2014-10-29 04:59:29
【问题描述】:

MainActivity.java//这是我的主要java活动文件

package com.example.news;

import android.support.v7.app.ActionBarActivity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
//import java.awt.*;
import java.lang.*;
import java.io.*;

public class MainActivity extends ActionBarActivity {

    protected static final String Context = null;
    String[] data={"Times of India","Deccan chronical","The Hindu","Hindusthan Times","Indian Express"};
    int[] image_id={R.drawable.toi,R.drawable.dc,R.drawable.hindu,R.drawable.htime,R.drawable.indian};
    ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Customlistadapter adpt=new Customlistadapter(this,image_id,data);
        lv=(ListView)findViewById(R.id.list1);
       // ArrayAdapter<String> adpt=new ArrayAdapter<String>(this, R.layout.single_row,R.id.text1,data);
        lv.setAdapter(adpt);
        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                if(position==0)
                {
                //Intent intent=new Intent(MainActivity.this,SendMesasage.class);
                //String message = "http:///";
               try
               {
                    Intent i=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.timesofindia.indiatimes.com"));
                startActivity(i);
               }
               catch(Exception e)
               {
                  // Log.i("soory");
                   //System.out.println("Sorry");
                   e.printStackTrace();
               }
                //intent.putExtra("ABCD", message);
               // startActivity(intent);
                }
                else if(position==1)
                {
                      try
                      {
                        Intent i=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.timesofindia.indiatimes.com"));
                    startActivity(i);
                      }
                      catch(Exception e)
                      {
                      // Log.i("soory");
                       //System.out.println("Sorry");
                       e.printStackTrace();
                      }

                }

            }


        });        
    }



}

即使我在调试程序时找不到任何错误,当我启动应用程序时它显示,“不幸的是我的应用程序已停止” 我不明白为什么会这样。 我看了一些以前的帖子与这个问题有关,但我仍然找不到解决方案。

**CustomListAdapter.java**


package com.example.news;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.io.*;
import java.lang.*;

public class Customlistadapter extends ArrayAdapter{
     String[] data;
     int[] image_id;
     Context context;
     public Customlistadapter(Activity context,int[] image_id2, String[] text){
     super(context, R.layout.single_row,text);
     // TODO Auto-generated constructor stub
     this.data=text;
     this.image_id=image_id2;
     this.context=context;
     }
     @Override
     public View getView(int position, View convertView, ViewGroup parent) {
     // TODO Auto-generated method stub
     LayoutInflater inflater = (LayoutInflater) context
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     View single_row= inflater.inflate(R.layout.single_row, null,
     true);
     TextView textView=(TextView) single_row.findViewById(R.id.text1);
     ImageView imageView = (ImageView) single_row.findViewById(R.id.imageView1);
     textView.setText(data[position]);
     imageView.setImageResource(image_id[position]);
     return single_row; 
     }
}

当我启动这个程序时,我会收到“不幸的是 Myapp 已停止”,所以我认为这是 NULLPOINTER Exception 但我仍然无法修复它 所以请大家帮帮我

activity_main.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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.news.MainActivity" >

   <ListView 
       android:id="@+id/list1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentTop="true"
       android:layout_alignParentLeft="true">

   </ListView>
</RelativeLayout>

【问题讨论】:

    标签: android eclipse listview android-emulator onclicklistener


    【解决方案1】:

    您的 getView() 方法不正确。请按如下方式更改您的 getView()

     @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub 
    
          ViewHolder view;
    
                if(convertView==null)
                {
                    view = new ViewHolder();
                    convertView=inflater.inflate(R.layout.single_row,null);
                    view. textView=(TextView)convertView.findViewById(R.id.title);
    
                    view.imageView=(ImageView)convertView.findViewById(R.id.list_image);
    
    
                    convertView.setTag(view);
                }
                else
                {
                    view = (ViewHolder) convertView.getTag();
                }
    
                view.textView.setText(data[position]);
                view.imageView.setImageResource(image_id[position]);
    
                return convertView;
    
            }
    
            public static class ViewHolder
            {
                public TextView textView;
                public ImageView imageView;
            }
    }
    

    同时在 适配器构造函数中初始化充气器:

     LayoutInflater inflater;
     public Customlistadapter(Activity context,int[] image_id2, String[] text){
         super(context, R.layout.single_row,text);
         // TODO Auto-generated constructor stub
         this.data=text;
         this.image_id=image_id2;
         this.context=context;
         inflater = LayoutInflater.from(this.context);
         }
    

    要正确理解listview的回收机制,请参考this

    【讨论】:

    • 但是先生,当我不在 listview 上使用 evenhalders 时,它工作正常并显示带有名称视图的图像
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2015-11-19
    相关资源
    最近更新 更多