Android Intent putExtra,NullPointerException
我正在尝试创建一个RSS应用程序,在这里我有一个带有WebView的活动,相关的文章应该被打开。我使用的是可能不起作用的。。。有人有解决方案的建议吗 谢谢大家! ShowNews.javaAndroid Intent putExtra,NullPointerException,android,webview,nullpointerexception,intentfilter,Android,Webview,Nullpointerexception,Intentfilter,我正在尝试创建一个RSS应用程序,在这里我有一个带有WebView的活动,相关的文章应该被打开。我使用的是可能不起作用的。。。有人有解决方案的建议吗 谢谢大家! ShowNews.java import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widg
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class ShowNews extends Activity{
public void onCreate(Bundle bundle)
{
super.onCreate(bundle);
setContentView(R.layout.show_news);
String oneNews = null;
String nTitle = null;
String nDesc = null;
String nDate = null;
String nLink = null;
Intent i = getIntent();
if(i != null)
{
Bundle b = i.getBundleExtra("BUNDLE.VISA.SEN.INTENT");
if(b == null)
{
oneNews = "Fel bundle?";
} else {
nTitle = b.getString("title");
nDesc = b.getString("description");
nDate = b.getString("pubdate");
nLink = b.getString("link");
}
} else {
oneNews = "Information Not Found.";
}
TextView tTitle = (TextView)findViewById(R.id.title);
TextView tDesc = (TextView)findViewById(R.id.desc);
TextView tDate = (TextView)findViewById(R.id.pubdate);
TextView tLink = (TextView)findViewById(R.id.link);
tTitle.setText(nTitle);
tDesc.setText(nDesc);
tDate.setText(nDate);
tLink.setText(nLink);
final String iLink = nLink;
tLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(ShowNews.this, Browser.class);
i.putExtra("link", String.valueOf(iLink));
startActivity(i);
}
});
}
}
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.content.Intent;
@SuppressLint("SetJavaScriptEnabled")
public class Browser extends Activity {
private WebView mWebView;
//String i = getIntent().getStringExtra("link");
Bundle extras = getIntent().getExtras();
String URLEN = extras.getString("link");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);
mWebView = (WebView)findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(URLEN);
mWebView.setWebViewClient(new WebClient());
}
public class WebClient extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url)
{
webview.loadUrl(url);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Browser.java
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class ShowNews extends Activity{
public void onCreate(Bundle bundle)
{
super.onCreate(bundle);
setContentView(R.layout.show_news);
String oneNews = null;
String nTitle = null;
String nDesc = null;
String nDate = null;
String nLink = null;
Intent i = getIntent();
if(i != null)
{
Bundle b = i.getBundleExtra("BUNDLE.VISA.SEN.INTENT");
if(b == null)
{
oneNews = "Fel bundle?";
} else {
nTitle = b.getString("title");
nDesc = b.getString("description");
nDate = b.getString("pubdate");
nLink = b.getString("link");
}
} else {
oneNews = "Information Not Found.";
}
TextView tTitle = (TextView)findViewById(R.id.title);
TextView tDesc = (TextView)findViewById(R.id.desc);
TextView tDate = (TextView)findViewById(R.id.pubdate);
TextView tLink = (TextView)findViewById(R.id.link);
tTitle.setText(nTitle);
tDesc.setText(nDesc);
tDate.setText(nDate);
tLink.setText(nLink);
final String iLink = nLink;
tLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(ShowNews.this, Browser.class);
i.putExtra("link", String.valueOf(iLink));
startActivity(i);
}
});
}
}
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.content.Intent;
@SuppressLint("SetJavaScriptEnabled")
public class Browser extends Activity {
private WebView mWebView;
//String i = getIntent().getStringExtra("link");
Bundle extras = getIntent().getExtras();
String URLEN = extras.getString("link");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);
mWebView = (WebView)findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(URLEN);
mWebView.setWebViewClient(new WebClient());
}
public class WebClient extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url)
{
webview.loadUrl(url);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
错误
01-12 22:55:53.328: E/AndroidRuntime(12532): FATAL EXCEPTION: main
01-12 22:55:53.328: E/AndroidRuntime(12532): Process: com.example.com.raj.rss, PID: 12532
01-12 22:55:53.328: E/AndroidRuntime(12532): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.com.raj.rss/com.example.com.raj.rss.Browser}: java.lang.NullPointerException
01-12 22:55:53.328: E/AndroidRuntime(12532): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2124)
01-12 22:55:53.328: E/AndroidRuntime(12532): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2248)
01-12 22:55:53.328: E/AndroidRuntime(12532): at android.app.ActivityThread.access$800(ActivityThread.java:138)
01-12 22:55:53.328: E/AndroidRuntime(12532): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
01-12 22:55:53.328: E/AndroidRuntime(12532): at android.os.Handler.dispatchMessage(Handler.java:102)
01-12 22:55:53.328: E/AndroidRuntime(12532): at android.os.Looper.loop(Looper.java:136)
01-12 22:55:53.328: E/AndroidRuntime(12532): at android.app.ActivityThread.main(ActivityThread.java:5050)
01-12 22:55:53.328: E/AndroidRuntime(12532): at java.lang.reflect.Method.invokeNative(Native Method)
01-12 22:55:53.328: E/AndroidRuntime(12532): at java.lang.reflect.Method.invoke(Method.java:515)
01-12 22:55:53.328: E/AndroidRuntime(12532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1264)
01-12 22:55:53.328: E/AndroidRuntime(12532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1080)
01-12 22:55:53.328: E/AndroidRuntime(12532): at dalvik.system.NativeStart.main(Native Method)
01-12 22:55:53.328: E/AndroidRuntime(12532): Caused by: java.lang.NullPointerException
01-12 22:55:53.328: E/AndroidRuntime(12532): at com.example.com.raj.rss.Browser.<init>(Browser.java:20)
01-12 22:55:53.328: E/AndroidRuntime(12532): at java.lang.Class.newInstanceImpl(Native Method)
01-12 22:55:53.328: E/AndroidRuntime(12532): at java.lang.Class.newInstance(Class.java:1208)
01-12 22:55:53.328: E/AndroidRuntime(12532): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
01-12 22:55:53.328: E/AndroidRuntime(12532): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115)
01-12 22:55:53.328: E/AndroidRuntime(12532): ... 11 more
01-12 22:55:53.328:E/AndroidRuntime(12532):致命异常:main
01-12 22:55:53.328:E/AndroidRuntime(12532):进程:com.example.com.raj.rss,PID:12532
01-12 22:55:53.328:E/AndroidRuntime(12532):java.lang.RuntimeException:无法实例化活动组件信息{com.example.com.raj.rss/com.example.com.raj.rss.Browser}:java.lang.NullPointerException
01-12 22:55:53.328:E/AndroidRuntime(12532):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2124)
01-12 22:55:53.328:E/AndroidRuntime(12532):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2248)
01-12 22:55:53.328:E/AndroidRuntime(12532):在android.app.ActivityThread.access$800(ActivityThread.java:138)
01-12 22:55:53.328:E/AndroidRuntime(12532):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
01-12 22:55:53.328:E/AndroidRuntime(12532):在android.os.Handler.dispatchMessage(Handler.java:102)上
01-12 22:55:53.328:E/AndroidRuntime(12532):在android.os.Looper.loop(Looper.java:136)
01-12 22:55:53.328:E/AndroidRuntime(12532):位于android.app.ActivityThread.main(ActivityThread.java:5050)
01-12 22:55:53.328:E/AndroidRuntime(12532):位于java.lang.reflect.Method.Invokenactive(本机方法)
01-12 22:55:53.328:E/AndroidRuntime(12532):位于java.lang.reflect.Method.invoke(Method.java:515)
01-12 22:55:53.328:E/AndroidRuntime(12532):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1264)
01-12 22:55:53.328:E/AndroidRuntime(12532):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1080)
01-12 22:55:53.328:E/AndroidRuntime(12532):在dalvik.system.NativeStart.main(本机方法)
01-12 22:55:53.328:E/AndroidRuntime(12532):由以下原因引起:java.lang.NullPointerException
01-12 22:55:53.328:E/AndroidRuntime(12532):位于com.example.com.raj.rss.Browser。(Browser.java:20)
01-12 22:55:53.328:E/AndroidRuntime(12532):位于java.lang.Class.newInstanceImpl(本机方法)
01-12 22:55:53.328:E/AndroidRuntime(12532):位于java.lang.Class.newInstance(Class.java:1208)
01-12 22:55:53.328:E/AndroidRuntime(12532):在android.app.Instrumentation.newActivity(Instrumentation.java:1061)上
01-12 22:55:53.328:E/AndroidRuntime(12532):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115)上
01-12 22:55:53.328:E/AndroidRuntime(12532):。。。还有11个
不能在类级别上使用意图,必须在onCreate
中使用意图(以便在使用意图之前运行onCreate
)
将此移动到onCreate()中
至少在
onCreate()
非常感谢您之前,您无法访问该意图。感激