Android问题将变量/意图传递给活动

时间:2011-06-04 08:21:06

标签: android string android-activity

好的,所以我搜索了这个网站,发现了许多关于如何使用Intent将变量传递给另一个活动的教程,但由于某种原因,除了null值之外我仍然无法传递任何东西。 Logcat告诉我这个:

E/AndroidRuntime(  747): java.lang.RuntimeException: Unable to start activity ComponentInfo{eu.sourceway.tutorials.BetterTabs/eu.sourceway.tutorials.BetterTabs.addonsBrowser}: java.lang.NullPointerException

这是我的首发活动:

        lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
          String content = links[position];
            Intent addonPage = new Intent(ThirdTab.this,addonsBrowser.class);
            Bundle b = new Bundle();
            b.putString("passed", "http://google.com");
            addonPage.putExtras(b);
            startActivity(addonPage);

      }

    }); 

这是我的辅助活动:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Bundle extras = getIntent().getExtras();

String URL = extras.getString("passed");

browser=new WebView(this);
browser.setWebViewClient(new WebViewClient());
browser.setInitialScale(55);

setContentView(browser);
browser.loadUrl(URL);



}

我在Eclipse中设置了一个断点并在第二个Activity中查看了传递的Bundle变量“extras”,它显示为null,因此logcat结果导致得出结论它没有被传递。 另外,如果你查看第一个Activity,我实际上是从最初从ArrayList中提取的URL,然后存储在名为content的String变量中,但是也不会传递。这就是为什么我提交“http://google.com”地址的原因。我已尝试使用其他网址,仍然无法通过它。我知道网络有效,因为我已经能够在webview中加载页面。 这样做的主要目的是使列表具有来自网站的链接,并使用onItemClick将URL传递给另一个具有WebView以加载它的Activity。 在ArraysList中生成URL有效。我已经能够填充列表。问题是,一旦我点击一个链接就会强制关闭,因为发送的变量是null。 任何想法都非常感谢。

2 个答案:

答案 0 :(得分:1)

在我的开始活动中试试这个:

Intent addonPage = new Intent(ThirdTab.this,addonsBrowser.class);

addonPage.putExtra("passed", "http://google.com");

startActivityForResult(addonPage, 0);

在我的辅助活动中试试这个:

private String message;

message = getIntent().getExtras().getString(passed);

答案 1 :(得分:1)

“检查一下,只需将此代码放入第一个活动的onclick中注意: - &gt;直接捕获edittext donot将编辑文本保存在字符串中然后传递它,如果你要显示那么字符串将不会通过。以下示例“

 public void onClick(View v) {

// TODO Auto-generated method stub
Intent i = new Intent(this,Web.class);
i.putExtra("epuzzle",urlenter.getText().toString());

final int result = 1;
startActivityForResult(i, result);
}

“现在在第二个活动中放了这个,注意: - &gt;你是否会尝试将活动的字符串首先保存到活动中的另一个字符串中然后它将无法工作,你应该直接将字符串传递给loadurl而不是保存并传递给loadurl。“

 Intent intent = getIntent();
 w.loadUrl(intent.getExtras().getString("epuzzle"));
 w.getSettings().setJavaScriptEnabled(true);

请告诉我它是否适合您。