我試圖修改Android教程(http://developer.android.com/training/basics/firstapp/index.html),以便用戶不必顯示用戶輸入應用程序的文本就可以加載他們輸入的網址並將其顯示在WebView中。Android MyFirstApp + WebView與「無法啓動活動」一起死亡
這是我...目錄下載
D/dalvikvm( 401): GC_CONCURRENT freed 431K, 6% free 9693K/10311K, paused 474ms+125ms, total 7912ms
D/myfirstapp_tag(1090): Main Line 23
D/myfirstapp_tag(1090): Main Line 26
D/myfirstapp_tag(1090): Main Line 28
D/myfirstapp_tag(1090): Main Line 30
D/myfirstapp_tag(1090): Main Line 32
I/ActivityManager( 150): START {cmp=com.example.myfirstapp/.DisplayMessageActivity (has extras) u=0} from pid 1090
W/WindowManager( 150): Failure taking screenshot for (246x410) to layer 21015
I/Choreographer(1090): Skipped 137 frames! The application may be doing too much work on its main thread.
D/myfirstapp_tag(1090): Line 14
D/myfirstapp_tag(1090): Line 16
D/myfirstapp_tag(1090): Line 20
D/myfirstapp_tag(1090): Line 22
D/myfirstapp_tag(1090): Line 32
D/myfirstapp_tag(1090): Line 34
D/AndroidRuntime(1090): Shutting down VM
W/dalvikvm(1090): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
E/AndroidRuntime(1090): FATAL EXCEPTION: main
E/AndroidRuntime(1090): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfirstapp/com.example .myfirstapp.DisplayMessageActivity}: java.lang.NullPointerException
E/AndroidRuntime(1090): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
E/AndroidRuntime(1090): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
E/AndroidRuntime(1090): at android.app.ActivityThread.access$600(ActivityThread.java:130)
E/AndroidRuntime(1090): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
E/AndroidRuntime(1090): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(1090): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1090): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(1090): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1090): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1090): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(1090): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(1090): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(1090): Caused by: java.lang.NullPointerException
E/AndroidRuntime(1090): at com.example.myfirstapp.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:36)
E/AndroidRuntime(1090): at android.app.Activity.performCreate(Activity.java:5008)
E/AndroidRuntime(1090): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
E/AndroidRuntime(1090): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
E/AndroidRuntime(1090): ... 11 more
W/ActivityManager( 150): Force finishing activity com.example.myfirstapp/.DisplayMessageActivity
W/ActivityManager( 150): Force finishing activity com.example.myfirstapp/.MainActivity
W/ActivityManager( 150): Activity pause timeout for ActivityRecord{415e1cc8 com.example.myfirstapp/.DisplayMessageActivity}
我做這個命令行的方式在Ubuntu所以這裏是我的./AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myfirstapp"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
<activity android:name="MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DisplayMessageActivity" android:label="@string/title_activity_display_message" >
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
</manifest>
這裏是我的RES /佈局/主.XML ...
<?xml version="1.0" encoding="utf-8"?>
<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:orientation="horizontal">
<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
</LinearLayout>
...和我RES /佈局/ webview.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
我有兩個源文件。這其中的src/COM /例子/ myfirstapp/MainActivity.java
package com.example.myfirstapp;
import android.app.Activity;
import android.view.View;
import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;
import android.util.Log;
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d ("myfirstapp_tag", "Main Line 15");
super.onCreate(savedInstanceState);
Log.d ("myfirstapp_tag", "Main Line 17");
setContentView(R.layout.main);
Log.d ("myfirstapp_tag", "Main Line 19");
}
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
Log.d ("myfirstapp_tag", "Main Line 23");
// Do something in response to button
Intent intent = new Intent(this, com.example.myfirstapp.DisplayMessageActivity.class);
Log.d ("myfirstapp_tag", "Main Line 26");
EditText editText = (EditText) findViewById(R.id.edit_message);
Log.d ("myfirstapp_tag", "Main Line 28");
String message = editText.getText().toString();
Log.d ("myfirstapp_tag", "Main Line 30");
intent.putExtra(EXTRA_MESSAGE, message);
Log.d ("myfirstapp_tag", "Main Line 32");
startActivity(intent);
}
}
而這一次...的src/COM /例子/ myfirstapp/DisplayMessageActivity.java
package com.example.myfirstapp;
import android.app.Activity;
import android.content.Intent;
import android.widget.TextView;
import android.view.View;
import android.webkit.WebView;
import android.os.Bundle;
import android.util.Log;
public class DisplayMessageActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d ("myfirstapp_tag", "Line 14");
super.onCreate(savedInstanceState);
Log.d ("myfirstapp_tag", "Line 16");
// Get the message from the intent
Intent intent = getIntent();
Log.d ("myfirstapp_tag", "Line 20");
String message = intent.getStringExtra(com.example.myfirstapp.MainActivity.EXTRA_MESSAGE);
Log.d ("myfirstapp_tag", "Line 22");
// Create the text view
// TextView textView = new TextView(this);
// textView.setTextSize(40);
// textView.setText(message);
// Set the text view as the activity layout
// setContentView(textView);
//WebView webView = new WebView(this); //WebView myWebView = (WebView) findViewById(R.id.webview);
Log.d ("myfirstapp_tag", "Line 32");
WebView webView = (WebView) findViewById(R.id.webview); //webView = (WebView) findViewById(R.id.webview);
Log.d ("myfirstapp_tag", "Line 34");
//setContentView(webView);
webView.loadUrl(message);
Log.d ("myfirstapp_tag", "Line 37");
setContentView(webView);
Log.d ("myfirstapp_tag", "Line 39");
}
}
我可以從看目錄下載該行...
WebView webView = (WebView) findViewById(R.id.webview);
...是我的應用程序正在死亡。我只是不明白爲什麼。有人可以幫我:)
是的,我沒有做......的setContentView(R.layout.webview); WebView webView =(WebView)findViewById(R.id.webview);謝謝!!! –