2012-10-26 45 views
0

这是我的代码。getExtras()返回null

在我的主要.java文件中。

public void showQuiz (View view){ 
     Username = (EditText) findViewById(R.id.Username); 
     String userId = Username.getText().toString(); 
     String deviceId = Secure.getString(this.getContentResolver(), 
       Secure.ANDROID_ID); 
     //this intent is used to open other activity wich contains another webView 
     Intent intent = new Intent(this, Quiz.class); 

     Bundle bun = new Bundle(); 
     bun.putString("userid",userId); 
     bun.putString("deviceid", deviceId); 

     intent.putExtras(bun); 
     startActivity(intent); 
    } 

这是什么在活动的java文件。

package com.earn.egpt; 

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class Quiz extends Activity { 
    private static final String url = "http://www.m.s-w-family.com/?subid="; 
    private static final String url2 = "&deid="; 

    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_quiz); 
      Bundle extras=getIntent().getExtras(); 
      String userId=extras.getString("userId"); 
      String deviceId=extras.getString("deviceId"); 
     WebView webview; 
     webview = (WebView) findViewById(R.id.webView1); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.loadUrl(url+userId+url2+deviceId); 
     } 
    } 

由于某些原因它将字符串作为null传递,但我不知道为什么。我对这种编程非常陌生,所以我甚至不知道该去哪里。我已经查看了类似于我的其他问题,并尝试了解决这些问题,但值仍然为空。

回答

2

您正在使用额外的Bundle。直接把临时演员到意图,而不是:

intent.putExtra("userid", userId); 
intent.putExtra("deviceid", deviceId); 

startActivity(intent); 

现在你getString()方法将返回在测验想要什么。

+0

我得到这个错误'该方法putString(字符串,字符串)是不明确的类型意图' – kira423

+0

哦,达尔,我改变了我的代码适当的方法。谢谢! – Sam

+0

不幸的是,它们仍然返回NULL – kira423

5

观察变量的大小写。你插入“userid”并检索“userId”。

+0

非常感谢,我现在感觉很傻! – kira423

+0

不错,赶上蒂姆,我错过了。 (upvote)@ kira423考虑对id使用“public static final String”引用,而不是手写Strings,以防止将来出现这种错误。 – Sam