2012-07-17 263 views
0

我開發了一個使用soap webservices的登錄表單示例。將值從一個活動傳遞到另一個活動

在我的應用程序中,我有一個開始活動HomePage.HomePage,並且我有一個按鈕(myaccount)。當我點擊myaccount按鈕時,它將成功重定向到androidloginexampleactivity

這裏我輸入詳細信息usernamepassword。細節是正確的,這意味着它被重定向到HomePage並通過username。我登錄成功,但在此之後它已關閉。

這是我的編碼部分:

Homepage.java是

public class HomePage extends Activity { 
private Button account; 
private TextView tv; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.home); 

Button account = (Button) findViewById(R.id.account); 
TextView tv = (TextView) findViewById(R.id.textView1); 
     tv.setText("Welcome ,"+getIntent().getExtras().getString("username")); 

// Listening to register new account link 
account.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     Intent i = new Intent(getApplicationContext() , AndroidLoginExampleActivity.class); 
     startActivity(i); 
    } 
}); 

    } 

    } 

AndroidLoginExampleActivity.java

public class AndroidLoginExampleActivity extends Activity { 
    private final String NAMESPACE = "http://ws.userlogin.com"; 
    private final String URL = "http://192.168.1.168:8085/Login/services/Login?wsdl"; 
    private final String SOAP_ACTION = "http://ws.userlogin.com/authentication"; 
    private final String METHOD_NAME = "authentication"; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button login = (Button) findViewById(R.id.btn_login); 
    login.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View arg0) { 
    loginAction(); 

    } 
    }); 
    } 

    private void loginAction(){ 
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

    EditText userName = (EditText) findViewById(R.id.tf_userName); 
    String user_Name = userName.getText().toString(); 
    EditText userPassword = (EditText) findViewById(R.id.tf_password); 
    String user_Password = userPassword.getText().toString(); 

    //Pass value for userName variable of the web service 
    PropertyInfo unameProp =new PropertyInfo(); 
    unameProp.setName("userName");//Define the variable name in the web service method 
    unameProp.setValue(user_Name);//set value for userName variable 
    unameProp.setType(String.class);//Define the type of the variable 
    request.addProperty(unameProp);//Pass properties to the variable 

    //Pass value for Password variable of the web service 
    PropertyInfo passwordProp =new PropertyInfo(); 
    passwordProp.setName("password"); 
    passwordProp.setValue(user_Password); 
    passwordProp.setType(String.class); 
    request.addProperty(passwordProp); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.setOutputSoapObject(request); 
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

    try{ 
     androidHttpTransport.call(SOAP_ACTION, envelope); 
      SoapPrimitive response = (SoapPrimitive)envelope.getResponse(); 
      String status = response.toString(); 
      TextView result = (TextView) findViewById(R.id.tv_status); 
      result.setText(response.toString()); 

      if(status.equals("Success!")) 
      { 
       Intent intent = new Intent(AndroidLoginExampleActivity.this,HomePage.class); 
       intent.putExtra("username",userName.getText().toString()); 
       startActivity(intent); 

      } 
      else 
      { 
       // Code for Login failure 
      } 
      } 



    catch(Exception e){ 

     } 

     } 

     } 

如何解決DIS錯誤?

這是我的logcat窗口:

07-17 15:52:00.997: E/AndroidRuntime(1798): FATAL EXCEPTION: main 
07-17 15:52:00.997: E/AndroidRuntime(1798): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidlogin.ws/com.androidlogin.ws.HomePage}: java.lang.NullPointerException 
. 
. 
. 
dalvik.system.NativeStart.main(Native Method) 
07-17 15:52:00.997: E/AndroidRuntime(1798): Caused by: java.lang.NullPointerException 
07-17 15:52:00.997: E/AndroidRuntime(1798): at com.androidlogin.ws.HomePage.onCreate(HomePage.java:30) 
+3

首先不要爲了您的安全發佈您的所有編碼。只是顯示你的錯誤。 – 2012-07-17 10:13:38

+0

你怎麼知道它的強制關閉後登錄也許它崩潰與'NetworkOnMainThreadException'?所以在應用程序崩潰時發佈完整日誌。如果它與'NetworkOnMainThreadException'崩潰,然後使用asynctask或Handler在後臺執行網絡操作 – 2012-07-17 10:13:55

+0

你必須發佈你的錯誤或什麼是你的問題,而不是這樣的.. – 2012-07-17 10:14:56

回答

1

只要檢查你的額外不爲空:

if(getIntent().getExtras() != null) { 
    tv.setText("Welcome ," + getIntent().getExtras().getString("username")); 
} 

只需添加如果()條件,因爲我在HomePage.Java已經指出

0

您已經通過調用startActivityForResult(Intent, int)而不是startActivity()開始AndroidLoginExampleActivity。這樣你可以將數據發送到,調用活動,並從接收數據,稱爲活動。

供您參考閱讀 - Activity.

0

你的問題:從一個活動到另一個活動 + 通價值?

我的答案:您可以使用SharedPreferences將值從一個活動傳遞給另一個。

要設置值:

String inputName = "Peter"; 
String inputPassword = "I love Stackoverflow"; 
SharedPreferences prefs = getSharedPreferences("myPrefs", 0); 
SharedPreferences editor = prefs.edit(); 
editor.putString("accountName", inputName); 
editor.putString("accountPassword", inputPassword); 
editor.commit(); 

要獲得inputName和控件inputPassword在你的其他活動:

String prefOutputAccountName = "no name"; 
String prefOutputAccountPassword = "no password"; 
SharedPreferences prefs = getSharedPreferences("myPrefs", 0); 
prefOutputAccountName = prefs.getString("accountName", prefOutputAccountName); 
prefOutputAccountPassword = prefs.getString("accountPassword", prefOutputAccountPassword); 

我希望我收到了你的問題的權利。

0

你的問題:通過值從一個活動到另一個活動+?

我的答案:您可以使用SharedPreferences將值從一個活動傳遞給另一個。

要設置值:

String inputName = "Peter"; 
String inputPassword = "I love Stackoverflow"; 
SharedPreferences prefs = getSharedPreferences("myPrefs", 0); 
SharedPreferences editor = prefs.edit(); 
editor.putString("accountName", inputName); 
editor.putString("accountPassword", inputPassword); 
editor.commit(); 

要獲得inputName和控件inputPassword在你的其他活動:

String prefOutputAccountName = "no name"; 
String prefOutputAccountPassword = "no password"; 
SharedPreferences prefs = getSharedPreferences("myPrefs", 0); 
prefOutputAccountName = prefs.getString("accountName", prefOutputAccountName); 
prefOutputAccountPassword = prefs.getString("accountPassword", prefOutputAccountPassword); 

我希望我收到了你的問題的權利。

相關問題