2012-07-17 171 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); 

我希望我收到了你的问题的权利。

相关问题