2016-03-08 52 views
0

我得到一個空指針異常在下面的線未知的空指針異常的數組適配器

ArrayAdapter<String> arrayadapt = new ArrayAdapter<String>(Loginpage.this,R.layout.activity_loginpage,R.id.textView1, numbers); 

這裏是下面的代碼,

public class Loginpage extends Activity implements OnItemClickListener{ 

    TextView txtview; 
    ListView listview; 
    String[] numbers = {"987654321","456789321","451236987","4178522369"}; 

    Intent newInt; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_loginpage); 
     txtview = (TextView)findViewById(R.id.textView1); 
     listview = (ListView)findViewById(R.id.listView1); 
     ArrayAdapter<String> arrayadapt = new ArrayAdapter<String>(Loginpage.this,R.layout.activity_loginpage,R.id.textView1, numbers); 
     listview.setAdapter(arrayadapt); 
     listview.setOnItemClickListener(this); 


    } 


    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     String getdata = (String) parent.getItemAtPosition(position); 

     newInt = new Intent(Intent.ACTION_DIAL); 
     newInt.setData(Uri.parse("tel:"+getdata)); 
     startActivity(newInt); 


    } 


} 

這正從一個又一個活動叫,呼叫來自這行代碼,

Intent yIntent = new Intent(this, Loginpage.class); 
      startActivity(yIntent); 

logcat的

03-08 08:35:52.613: E/AndroidRuntime(2060): FATAL EXCEPTION: main 
03-08 08:35:52.613: E/AndroidRuntime(2060): Process: com.example.androidex2, PID: 2060 
03-08 08:35:52.613: E/AndroidRuntime(2060): java.lang.NullPointerException 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:392) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.AbsListView.obtainView(AbsListView.java:2255) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1263) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.ListView.onMeasure(ListView.java:1175) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.View.measure(View.java:16497) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1052) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:590) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.View.measure(View.java:16497) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.View.measure(View.java:16497) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.View.measure(View.java:16497) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.View.measure(View.java:16497) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1912) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1109) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1291) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5600) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.Choreographer.doFrame(Choreographer.java:544) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.os.Handler.handleCallback(Handler.java:733) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.os.Handler.dispatchMessage(Handler.java:95) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.os.Looper.loop(Looper.java:136) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at android.app.ActivityThread.main(ActivityThread.java:5001) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at java.lang.reflect.Method.invoke(Method.java:515) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
03-08 08:35:52.613: E/AndroidRuntime(2060):  at dalvik.system.NativeStart.main(Native Method) 

R.layout.activity_loginpage

<LinearLayout 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.androidex2.Loginpage" > 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 

    </ListView> 

</LinearLayout> 
+0

請提供您的R.layout.activity_loginpage – yital9

回答

1

你設置成Adapter主佈局 - R.layout.activity_loginpage

但作爲第二個參數,你必須通過View,將用於作爲「線」在ListView

因此,創建一個新的XML佈局 「listview_item.xml」 一個TextView

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/textView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

並調用現在

ArrayAdapter<String> arrayadapt = new ArrayAdapter<String>(Loginpage.this, R.layout.listview_item,R.id.textView1, numbers); 
+0

'R.id.textView1'在單獨的佈局中定義。這是對的嗎 ? –

+0

是的,現在您必須將此佈局設置爲適配器的第二個參數。在我的例子中,它的listview_item.xml – yital9

+0

請告訴我,如果我是正確的。我在單獨的佈局中創建了一個列表視圖,該佈局是R.layout.activity_loginpage和單獨佈局中的文本視圖。 –

0

您傳遞錯誤的佈局適配器。 它應該是該行的佈局。

JavadocThe resource ID for a layout file containing a layout to use when instantiating views.

0

不通過R.layout.activity_loginpage到一個ArrayAdapter的構造。這個地方的參數是爲佈局渲染ArrayAdapter的單個項目。 NullPointer發生,因爲您提供的R.layout.activity_loginpage佈局不包含ID爲R.id.textView1的TextView。

要解決這個問題,可以創建一個單獨的佈局,它定義了ID R.id.textView1一個TextView,或者只使用默認佈局之一:

ArrayAdapter<String> arrayadapt = new ArrayAdapter<String>(Loginpage.this,android.R.layout.simple_list_item_1, R.id.textView1, numbers); 
+0

'R.id.textView1'是在另一個佈局中定義的。 –

0

您沒有提供與ID textView1文本視圖。因此,請在佈局activity_loginpage中使用id爲textView1的TextView。

+0

這是錯的。在這種情況下,每個ListView項目將具有完整的佈局(使用ListView內部)。您必須爲TextView創建單獨的視圖 – yital9