2013-03-25 4 views
1

im, получающий ошибку с нулевым указателем, я не могу найти, что с ним не так. Это код активностиfatal error - null Указатель исключения

package ie.gmit.gmitapp; 

import android.os.Bundle; 

import android.app.ListActivity; 
import android.content.Context; 

import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.LinearLayout; 
import android.widget.ListView; 
import android.widget.TextView; 


public class BusinessActivity extends ListActivity { 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_bussiness); 

    //use our own list adapter 
    setListAdapter(new BusinessListAdapter(this)); 
} 

protected void onListItemClick(ListView l, View v, int position, long id) 
{  
    ((BusinessListAdapter)getListAdapter()).toggle(position); 
} 

    /** 
* A sample ListAdapter that presents content 
* from arrays of text and titles. 
* 
*/ 
private class BusinessListAdapter extends BaseAdapter { 
    public BusinessListAdapter(Context context) 
    { 
     mContext = context; 
    } 
    /** 
    * The number of items in the list is determined by the number of speeches 
    * in our array. 
    * 
    * @see android.widget.ListAdapter#getCount() 
    */ 
    public int getCount() { 
     return mTitles.length; 
    } 

    /** 
    * Since the data comes from an array, just returning 
    * the index is sufficent to get at the data. If we 
    * were using a more complex data structure, we 
    * would return whatever object represents one 
    * row in the list. 
    * 
    * @see android.widget.ListAdapter#getItem(int) 
    */ 
    public Object getItem(int position) { 
     return position; 
    } 

    /** 
    * Use the array index as a unique id. 
    * @see android.widget.ListAdapter#getItemId(int) 
    */ 
    public long getItemId(int position) { 
     return position; 
    } 

    /** 
    * Make a DescriptionView to hold each row. 
    * @see android.widget.ListAdapter#getView(int, android.view.View, android.view.ViewGroup) 
    */ 
    public View getView(int position, View convertView, ViewGroup parent) { 
     DescriptionView dv; 
     if (convertView == null) { 
      dv = new DescriptionView(mContext, mTitles[position], mDescription[position], mExpanded[position]); 
     } else { 
      dv = (DescriptionView)convertView; 
      dv.setTitle(mTitles[position]); 
      dv.setDescription(mDescription[position]); 
      dv.setExpanded(mExpanded[position]); 
     } 

     return dv; 
    } 

    public void toggle(int position) { 
     mExpanded[position] = !mExpanded[position]; 
     notifyDataSetChanged(); 
    } 

    /** 
    * Remember our context so we can use it when constructing views. 
    */ 
    private Context mContext; 

    /** 
    * Our data, part 1. 
    */ 
    private String[] mTitles = 
    { 
       "Bachelor of Business", 
       "Bachelor of Business (Honours)" 


    }; 

    private String[] mDescription = 
    { 
     "This programme provides you with a broadly-based business education" + 
     " to assist you to work successfully in business. You will study a variety " + 
     "of business subjects and develop a general understandng of the administrative, " + 
     "economics, legal, and social environment within which business operates. You will " + 
     "study the basics of business and get an insight into many business disciplines" + 
     " in years one and two. In year three you can specialise in Marketing, Human" + 
     " Resource Management, or Information Systems Management. There is a strong " + 
     "emphasis during the programme on practical business projects to develop the" + 
     "skills required by graduates in the workplace. (Students may apply to the" + 
     " Registrar for a Higher Certificate in Business after successfully completing " + 
     "two years of the programme.)", 

     "The School of Business offers a four-year honours degree (Level 8) in Business. " + 
     "This programme provides students with a broad-based business education to work" + 
     " successfully in business and offers students the opportunity to specialise in one " + 
     "of five streams. You will study a variety of business subjects and develop a general" + 
     " understanding of the administrative, economic, legal and social environment within" + 
     " which business operates. You will study the basics of business and get an insight" + 
     " into many business disciplines in years one and two. In year three you can specialise " + 
     "in marketing, human resource management or information systems management. In year four " + 
     "you can specialise in economics and finance, human resource management, management," + 
     " marketing or rural enterprise and agri-business. There is a strong emphasis on the" + 
     " current business environment and acquiring the skills and knowledge required for " + 
     "employment in business. Case studies and practical business projects are used to develop" + 
     " students' analysis, communication and professional business skills." 
    }; 
    /** 
    * Our data, part 3. 
    */ 
    private boolean[] mExpanded = 
    { 
      false, 
      false, 

    }; 
} 

/** 
* We will use a DescriptionView to display each speech. It's just a LinearLayout 
* with two text fields. 
* 
*/ 
private class DescriptionView extends LinearLayout { 
    private TextView mTitle; 
    private TextView mDescription; 

    public DescriptionView(Context context, String title, String desc, boolean expanded) { 
     super(context); 

     this.setOrientation(VERTICAL); 

     // Here we build the child views in code. They could also have 
     // been specified in an XML file. 

     mTitle = new TextView(context); 
     mTitle.setText(title); 
     addView(mTitle, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

     mDescription.setText(desc); 
     addView(mDescription, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

     mDescription.setVisibility(expanded ? VISIBLE : GONE); 
    } 

    /** 
    * Convenience method to set the title of a DescriptionView 
    */ 
    public void setTitle(String title) { 
     mTitle.setText(title); 
    } 

    /** 
    * Convenience method to set the description of a DescriptionView 
    */ 
    public void setDescription(String words) { 
     mDescription.setText(words); 
    } 

    /** 
    * Convenience method to expand or hide the description 
    */ 
    public void setExpanded(boolean expanded) { 
     mDescription.setVisibility(expanded ? VISIBLE : GONE); 
    } 



    } 
} 

здесь журнал кошки:

03-25 13:34:07.753: E/AndroidRuntime(912): FATAL EXCEPTION: main 
03-25 13:34:07.753: E/AndroidRuntime(912): java.lang.NullPointerException 
03-25 13:34:07.753: E/AndroidRuntime(912): at   ie.gmit.gmitapp.BusinessActivity$DescriptionView.<init>(BusinessActivity.java:174) 
03-25 13:34:07.753: E/AndroidRuntime(912): at ie.gmit.gmitapp.BusinessActivity$BusinessListAdapter.getView(BusinessActivity.java:82) 
03-25 13:34:07.753: E/AndroidRuntime(912): at android.widget.AbsListView.obtainView(AbsListView.java:2159) 
03-25 13:34:07.753: E/AndroidRuntime(912): at android.widget.ListView.makeAndAddView(ListView.java:1831) 

линия 174 является

mDescription.setText(desc) 

и линия 82 является

dv = new DescriptionView(mContext, mTitles[position], mDescription[position], mExpanded[position]); 

ответ

2

Вы не создаете объект mDescriptionTextView.

Итак, mDescription является нулевым, и вы получаете свой NPE.

Добавьте эту строку как раз перед линией 174 в вашем DescriptionView конструктору:

mDescription = new TextView(context); 

Для следующего раза, вы получаете NPE:
Вы получаете NPE при использовании неинициализированного объекта. Итак, проверьте номер строки, где произошел NPE, и посмотрите, какие объекты вы используете. В этом случае это только mDescription, поэтому, не глядя на какой-либо другой код, ясно, что mDescription не инициализирован/не создан.

+0

поблагодарить вас так много! – ciastkoo

0

Раскоментируйте ваш setContentView (R.layout.activity_bussiness) и попробуйте.

1

mDescription является null, потому что вы не инициализировали его в конструкторе DescriptionView.

1

Кажется, вы должны инициализировать mDescription TextField:

mTitle = new TextView(context); 
mDescription = new TextView(context); 
Смежные вопросы