意图不工作,崩溃应用程序

时间:2012-02-10 14:16:26

标签: android android-intent android-activity

我正在构建这个应用程序,我无法使其工作。这是代码,如果您发现问题,请发布解决方案。

这是主要活动

package in.isuru.caf;

//imports imported here. removed to simplify the code.

public class MainList extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final String[] main_items_array = getResources().getStringArray(R.array.main_items);
    setListAdapter(new ArrayAdapter<String>(MainList.this, android.R.layout.simple_list_item_1, main_items_array));

    final ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
          // When clicked, show a toast with the TextView text
          String selectedFromList = (String) (lv.getItemAtPosition(position));
          Toast.makeText(getApplicationContext(), selectedFromList, Toast.LENGTH_SHORT).show();

          if(selectedFromList.contains("Top 20 Questions")){
                Intent mainIntent = new Intent(MainList.this, in.isuru.caf.Top20Questions.class);
                startActivity(mainIntent);
          }

        }
      });

  }
}

这是第二项活动。

package in.isuru.caf;

import in.isuru.caf.R;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class Top20Questions extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    WebView myWebView = (WebView) findViewById(R.id.webview);
    myWebView.loadUrl("http://www.forums.catholic.com/forumdisplay.php?f=4&daysprune=-1&order=desc&sort=views");

    setContentView(R.layout.top_20_questions);
}

}

这是AndroidManifest.xml文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="in.isuru.caf"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".MainList" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Top20Questions"></activity>


</application>

</manifest>

我收到了这个错误。

01-21 12:18:44.231: E/AndroidRuntime(1767): 
java.lang.RuntimeException: Unable to start activity
ComponentInfo{in.isuru.caf/in.isuru.caf.Top20Questions}: 
java.lang.NullPointerException

8 个答案:

答案 0 :(得分:2)

在尝试访问任何资源之前,必须先调用setContentView()方法。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.top_20_questions);

    WebView myWebView = (WebView) findViewById(R.id.webview);
    ...
    ...
}

答案 1 :(得分:2)

试试这个:

Intent mainIntent = new Intent(MainList.this, Top20Questions.class);
startActivity(mainIntent);

答案 2 :(得分:1)

问题在于说明顺序:

setContentView(R.layout.top_20_questions);

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.loadUrl("...");

您必须先设置内容视图,然后查找具有给定ID的视图。

答案 3 :(得分:1)

您需要修复第二项活动。

见下文:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.top_20_questions);

    WebView myWebView = (WebView) findViewById(R.id.webview);
    myWebView.loadUrl("http://www.forums.catholic.com/forumdisplay.php?f=4&daysprune=-1&order=desc&sort=views");
}

答案 4 :(得分:1)

在尝试查找任何视图之前,您需要调用setContentView(..)。所以把你的setContentView(..)放在你的第二个活动中的super.onCreate(..)之后,它应该可以正常工作。

答案 5 :(得分:1)

您忘记了Top20Questions课程中的以下一行:

setContentView(R.layout.your_layout);

答案 6 :(得分:1)

首先使用setContentView设置内容视图,然后尝试使用其中的ID。然后只有上面的代码才能工作

答案 7 :(得分:1)

你需要setContentView(R.layout.top_20_questions);