簡體   English   中英

Android:致命異常:主要

[英]Android: FATAL EXCEPTION: main

我是安卓開發的新手。 我正在創建一個應用程序,它在列表視圖中顯示地址列表。 它有兩個活動。 DashboardGridActivity 是一個主要活動(此活動在 GridView 中顯示圖標)。 其次是在 DashboardGridActivity 的 onItemClick 函數中調用的 DisplayActivity(此活動從 XML 讀取數據並顯示在列表視圖中)。 以下是我的 DisplayActivity.java 文件:

public class DisplayActivity extends Activity {

ListView listView;
private String tag_name; 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display);

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

    Intent intent = getIntent();
    if(intent!= null)
    {
        //int imageId = intent.getIntExtra("DashboardImage",R.drawable.apartments);
        tag_name = intent.getStringExtra("DashItemName");
    }

    List<NameAddress> nameAddressList = null;
    try {
        XMLPullParserHandler parser = new XMLPullParserHandler(tag_name);
        nameAddressList = parser.parse(getAssets().open("data.xml"));
        ArrayAdapter<NameAddress> adapter =
            new ArrayAdapter<NameAddress>(this,R.layout.list_item, nameAddressList);
        listView.setAdapter(adapter);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.display, menu);
    return true;
  }
}

來自 DashboardGridActivity.java 文件的 onItemClick 函數

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    Intent intent = new Intent(this, DisplayActivity.class);
    ViewHolder holder= (ViewHolder) view.getTag();
    DashboardItems temp = (DashboardItems) holder.myItem.getTag();
    //intent.putExtra("DashboardImage",temp.imageID);
    intent.putExtra("DashItemName",temp.itemName);
    startActivity(intent);
}

當我嘗試運行此應用程序時,它會在 GridView 中顯示圖標,但是當我單擊圖標時,它顯示“不幸的是應用程序已停止”。 它還提供以下 LogCat

日志貓:

    04-11 13:34:20.695: I/Choreographer(1155): Skipped 183 frames!  The application may be doing too much work on its main thread.
04-11 13:34:23.085: W/InputEventReceiver(1155): Attempted to finish an input event but the input event receiver has already been disposed.
04-11 13:34:29.995: D/AndroidRuntime(1155): Shutting down VM
04-11 13:34:29.995: W/dalvikvm(1155): threadid=1: thread exiting with uncaught exception (group=0xb2a2dba8)
04-11 13:34:30.075: E/AndroidRuntime(1155): FATAL EXCEPTION: main
04-11 13:34:30.075: E/AndroidRuntime(1155): Process: com.asm.offcampusresources, PID: 1155
04-11 13:34:30.075: E/AndroidRuntime(1155): java.lang.NullPointerException
04-11 13:34:30.075: E/AndroidRuntime(1155):     at com.asm.offcampusresources.DashboardGridActivity.onItemClick(DashboardGridActivity.java:55)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at android.widget.AdapterView.performItemClick(AdapterView.java:299)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at android.widget.AbsListView$3.run(AbsListView.java:3638)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at android.os.Handler.handleCallback(Handler.java:733)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at android.os.Handler.dispatchMessage(Handler.java:95)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at android.os.Looper.loop(Looper.java:136)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at android.app.ActivityThread.main(ActivityThread.java:5017)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at java.lang.reflect.Method.invokeNative(Native Method)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at java.lang.reflect.Method.invoke(Method.java:515)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-11 13:34:30.075: E/AndroidRuntime(1155):     at dalvik.system.NativeStart.main(Native Method)
04-11 13:34:33.635: I/Process(1155): Sending signal. PID: 1155 SIG: 9

請建議我解決此問題的方法。

將此代碼用於您的 onItemClickListener

@Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        Intent intent = new Intent(this, DisplayActivity.class);

        DashboardItems temp = (DashboardItems) adapterView.getItemAtPosition(i);
        //intent.putExtra("DashboardImage",temp.imageID);
        intent.putExtra("DashItemName",temp.itemName);
        startActivity(intent);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM