2014-01-12 1 views
1

WebView, 관련 기사가있는 활동이있는 RSS 응용 프로그램을 만들려고합니다. 열어야합니다. 나는 의도를 사용 putExtra 작동하지 않을 수 있습니다 ... 누구나 솔루션에 대한 제안이 있습니까?의도 putExtra, NullPointerException

감사합니다.

ShowNews.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); 
      } 
     }); 
    } 
} 

Browser.java

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; 
    } 

} 

ERROR

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 

답변

2

당신은에서 사용할 수 없습니다 텐트를 클래스 수준에서 사용하려면 onCreate에서 사용해야하므로 (사용하기 전에 onCreate이 실행됩니다). 당신은 적어도 onCreate() 때까지 의도를 액세스 할 수 없습니다

Bundle extras = getIntent().getExtras(); 
String URLEN = extras.getString("link"); 

당신의에서 onCreate()에

public class Browser extends Activity { 

    private WebView mWebView; 

    Bundle extras; 
    String URLEN; 

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

     extras = getIntent().getExtras(); 
     URLEN = extras.getString("link"); 

     mWebView = (WebView)findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadUrl(URLEN); 
     mWebView.setWebViewClient(new WebClient()); 

    } 

    // .. the rest of the class 
} 
+1

대단히 감사합니다. 고맙다. – user2734182

0

이동이 있습니다.