2013-01-31 130 views
1

我必須通過在Android中使用arrayadapter將項目添加到列表視圖中,所以完成了編碼,如果我運行項目,應用程序獲得強制關閉,甚至提到了清單中的活動但仍然無法找到墜毀的確切原因。應用程序獲取崩潰時,將項目添加到列表視圖android

public class Jobs extends ListActivity { 
private TextView selection; 

private static final String[] items={"Computer Hardware", "Featured", "Information Technology", "Software", "Technical" 

}; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.jobs); 
    selection = (TextView)findViewById(R.id.selection); 
    ListView list = (ListView)findViewById(android.R.id.list); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      R.layout.jobs, items); 
     setListAdapter(adapter);  


    } 
public void onListItemClick(ListView parent, View v, int position, long id) 
{ 
    selection.setText(items[position]); 
} 
} 

的Manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.rebuix.com" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
android:minSdkVersion="9" 
android:targetSdkVersion="15" /> 

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
android:icon="@drawable/rebuix" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" 
android:background="#3D0909"> 
<activity 
    android:name=".LoadingScreen" 
    android:label="@string/title_activity_loading_screen" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name=".Rebuix" 
    android:label="@string/title_activity_rebuix" > 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.rebuix.com.Rebuix" /> 
</activity> 
<activity 
    android:name=".com.rebuix.com.Jobs" 
    android:label="@string/app_name" > 

</activity> 
<activity 
    android:name=".Login" 
    android:label="@string/title_activity_login" > 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.rebuix.com.Rebuix" /> 
</activity> 
<activity 
    android:name=".About" 
    android:label="@string/title_activity_about" > 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="android.support.v4.app.FragmentActivity" /> 
</activity> 
<activity 
    android:name=".Home" 
    android:label="@string/title_activity_home" > 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="android.support.v4.app.FragmentActivity" /> 
</activity> 
<activity 
    android:name=".Changepassword" 
    android:label="@string/title_activity_changepassword" > 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="android.support.v4.app.FragmentActivity" /> 
</activity> 

堆棧跟蹤

01-31 12:31:53.133: I/Tutorial(531): Starting task with url: www.google.co.uk 
01-31 12:32:03.972: D/dalvikvm(531): GC_EXTERNAL_ALLOC freed 64K, 52% free 2595K/5379K, external 1645K/2137K, paused 52ms 
    01-31 12:32:04.102: D/dalvikvm(531): GC_EXTERNAL_ALLOC freed 2K, 52% free 2594K/5379K, external 2687K/3355K, paused 45ms 
    01-31 12:32:08.083: D/AndroidRuntime(531): Shutting down VM 
    01-31 12:32:08.083: W/dalvikvm(531): threadid=1: thread exiting with uncaught exc eption (group=0x40015560) 
    01-31 12:32:08.103: E/AndroidRuntime(531): FATAL EXCEPTION: main 
    01-31 12:32:08.103: E/AndroidRuntime(531): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.exm.com/com.exm.com.Jobs}; have you declared this activity in your AndroidManifest.xml? 
    01-31 12:32:08.103: E/AndroidRuntime(531): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1405) 
01-31 12:32:08.103: E/AndroidRuntime(531): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379) 
01-31 12:32:08.103: E/AndroidRuntime(531): at android.app.Activity.startActivityForResult(Activity.java:2827) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at android.app.Activity.startActivity(Activity.java:2933) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at com.rebuix.com.Rebuix$4.onClick(Rebuix.java:69) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at android.view.View.performClick(View.java:2485) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at android.view.View$PerformClick.run(View.java:9080) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at android.os.Handler.handleCallback(Handler.java:587) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at android.os.Handler.dispatchMessage(Handler.java:92) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at android.os.Looper.loop(Looper.java:123) 
    01-31 12:32:08.103: E/AndroidRuntime(531):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
    01-31 12:32:08.103: E/AndroidRuntime(531):  at java.lang.reflect.Method.invokeNative(Native Method) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at java.lang.reflect.Method.invoke(Method.java:507) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
    01-31 12:32:08.103: E/AndroidRuntime(531):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
    01-31 12:32:08.103: E/AndroidRuntime(531): at dalvik.system.NativeStart.main(Native Method) 
+0

wats erclipse中的錯誤 –

+0

請發佈您的錯誤代碼以獲得更多幫助 –

+0

發佈日誌.. – Swati

回答

0

你現在不給你初始化選擇使用哪些包含null。所以你正在獲得NPE。

public void onListItemClick(ListView parent, View v, int position, long id) 
{ 
    >>>>selection.setText(items[position]); 
} 

試試這個。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.jobs); 
    selection = (TextView)findViewById(R.id.selection); //Write this 
    //Rest of code 
} 
+0

我已經初始化了選擇..也寫了這個代碼,,, @ TGMCians –

+0

你初始化的地方。正如我已經看到你的上面的代碼,我沒有找到。仍然有錯誤? –

+0

您還沒有在androidmanifest.xml中定義正確的映射。檢查此清單中的com.exm.com.Jobs活動映射。 –

0
public class Jobs extends ListActivity { 
private TextView selection; 

private static final String[] items={"Computer Hardware", "Featured", "Information Technology", "Software", "Technical" 

}; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.jobs); 
ListView listView = getListView(); //use defailt listview of android 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
     android.R.layout.jobs, items); 
    setListAdapter(adapter);  


    } 
    public void onListItemClick(ListView parent, View v, int position, long id) 
{ 
selection.setText(items[position]); 
    } 
    } 

在使用列表活動ü應使用默認列表...不是自定義列表名稱

+0

朋友笏需要downvote其正確的遐 –

+0

我沒有downvote兄弟,dnt知道誰做過@美國船長 –

+0

如果它的作品只是upvote我,因爲它減少我的點朋友點擊向上箭頭 –

1

你必須初始化textviewonCreate()

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.jobs); 
ListView list = (ListView)findViewById(R.id.list); 

selection = (TextView)findViewById(R.id.selection); 

} 
+0

我已初始化,但它仍然崩潰 –

1

在ListActivity,你不需要在你的Activity.It得到的ListView從xml.You自動獲取只需要給列表中查看定義的ID,即機器人:ID =「@機器人:ID /列表」並且在適配器中還提供了預定義的ID。你可以寫你的程序是這樣的:

jobs.xml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    /> 
    <TextView android:id="@+id/textSelected" 
    android:layout_alignParentBottom="true" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
     /> 
    </RelativeLayout> 

,並在您的活動:

private TextView selection; 

    private static final String[] items={"Computer Hardware", "Featured", "Information Technology", "Software", "Technical" 

    }; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.jobs); 
    selection=(TextView)findViewById(R.id.textSelected); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, items); 
     setListAdapter(adapter);  


     } 
    @Override 
    public void onListItemClick(ListView parent, View v, int position, long     id) 
    { 
    selection.setText(items[position]); 
     } 
    } 

希望這會解決您的問題。

相關問題