Намерение не работает, вылетает приложение - PullRequest
0 голосов
/ 10 февраля 2012

Я создаю это приложение и не могу заставить его работать. Вот код, и если вы найдете проблему, пожалуйста, опубликуйте решение.

Это основное занятие

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 ]

2 голосов
/ 10 февраля 2012

Попробуйте это:

Intent mainIntent = new Intent(MainList.this, Top20Questions.class);
startActivity(mainIntent);
2 голосов
/ 10 февраля 2012

Вы должны вызвать метод setContentView (), прежде чем пытаться получить доступ к любым ресурсам.

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

    WebView myWebView = (WebView) findViewById(R.id.webview);
    ...
    ...
}
1 голос
/ 28 мая 2012

вам нужно установитьContentView (R.layout.top_20_questions);

1 голос
/ 10 февраля 2012

Сначала установите представление содержимого с помощью setContentView, затем попробуйте использовать идентификаторы из него. тогда будет работать только приведенный выше код

1 голос
/ 10 февраля 2012

Вы забыли следующую строку в вашем Top20Questions классе:

setContentView(R.layout.your_layout);
1 голос
/ 10 февраля 2012

вам нужно вызвать setContentView (..), прежде чем пытаться найти какие-либо представления. Поэтому поместите ваш setContentView (..) сразу после super.onCreate (..) во второе упражнение, и оно должно работать нормально.

1 голос
/ 10 февраля 2012

вам нужно исправить второе занятие.

см. Ниже:

@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");
}
1 голос
/ 10 февраля 2012

Проблема в порядке следования инструкции:

setContentView(R.layout.top_20_questions);

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

Вы должны сначала установить представление содержимого, а затем искать представление с заданным идентификатором.

...