eclipse - Android activity refreshes itself instead of going to intended activity -
i have 2 buttons in activity. 1 logout button works fine , other camera button when clicked should lead activity. when click camera button go next activity(camera feature), current activity refreshes , each time click time have click logout button logout!(i.e if click camera button 5 times have click logout button 5 times logout). stupid new programming bear me! here relevant code snippets. if can appreciate it.
welcome class
package com.example.myapp; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; import com.parse.parseuser; public class welcome extends activity { // declare variable button logout; button camerabutton; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // view singleitemview.xml setcontentview(r.layout.welcome); // retrieve current user parse.com parseuser currentuser = parseuser.getcurrentuser(); // convert currentuser string string struser = currentuser.getusername().tostring(); // locate textview in welcome.xml textview txtuser = (textview) findviewbyid(r.id.txtuser); // set currentuser string textview txtuser.settext("you logged in " + struser); // locate button in welcome.xml logout = (button) findviewbyid(r.id.logout); // logout button click listener logout.setonclicklistener(new onclicklistener() { /** called when user clicks logout button */ public void onclick(view arg0) { // logout current user parseuser.logout(); finish(); } }); // locate button in welcome.xml camerabutton = (button) findviewbyid(r.id.camerabutton); // camera button click listener camerabutton.setonclicklistener(new onclicklistener() { /** called when user clicks camera button */ public void onclick(view view) { // send user camera.class intent intent = new intent(welcome.this, camera.class); startactivity(intent); } }); } }
button code in welcome xml layout file
<button android:id="@+id/camerabutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/logout" android:layout_centerhorizontal="true" android:onclick="sendmessage" android:text="@string/camerabtn" />
manifest
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="17" android:targetsdkversion="19" /> <uses-permission android:name="android.permission.internet" /> <application android:name="parseapplication" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:allowbackup="true" android:theme="@style/apptheme" > <activity android:name="com.example.myapp.mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name="com.example.myapp.loginsignupactivity" > </activity> <activity android:name="com.example.myapp.welcome" > </activity> <activity android:name="com.example.myapp.camera"> </activity> </application> </manifest>
strings xml file
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">myapp</string> <string name="app_name">myapp</string> <string name="username">username</string> <string name="password">password</string> <string name="loginbtn">login</string> <string name="signupbtn">sign up</string> <string name="logoutbtn">log out</string> <string name="camerabtn">camera</string> <string name="welcome">welcome!</string> <string name="tap">tap image open camera!!</string> <string name="title_camera">my message</string> </resources>
loginsignup class
public class loginsignupactivity extends activity { // declare variables button loginbutton; button signup; string usernametxt; string passwordtxt; edittext password; edittext username; /** called when activity first created. */ public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // view main.xml setcontentview(r.layout.loginsignup); // locate edittexts in main.xml username = (edittext) findviewbyid(r.id.username); password = (edittext) findviewbyid(r.id.password); // locate buttons in main.xml loginbutton = (button) findviewbyid(r.id.login); signup = (button) findviewbyid(r.id.signup); // login button click listener loginbutton.setonclicklistener(new onclicklistener() { public void onclick(view arg0) { // retrieve text entered edittext usernametxt = username.gettext().tostring(); passwordtxt = password.gettext().tostring(); // send data parse.com verification parseuser.logininbackground(usernametxt, passwordtxt, new logincallback() { public void done(parseuser user, parseexception e) { if (user != null) { // if user exist , authenticated, send user welcome.class intent intent = new intent( loginsignupactivity.this, welcome.class); startactivity(intent); toast.maketext(getapplicationcontext(), "successfully logged in", toast.length_long).show(); finish(); } else { toast.maketext( getapplicationcontext(), "no such user exist, please signup", toast.length_long).show(); } } }); } }); // sign button click listener signup.setonclicklistener(new onclicklistener() { public void onclick(view arg0) { // retrieve text entered edittext usernametxt = username.gettext().tostring(); passwordtxt = password.gettext().tostring(); // force user fill form if (usernametxt.equals("") && passwordtxt.equals("")) { toast.maketext(getapplicationcontext(), "please complete sign form", toast.length_long).show(); } else { // save new user data parse.com data storage parseuser user = new parseuser(); user.setusername(usernametxt); user.setpassword(passwordtxt); user.signupinbackground(new signupcallback() { public void done(parseexception e) { if (e == null) { // show simple toast message upon successful registration toast.maketext(getapplicationcontext(), "successfully signed up, please log in.", toast.length_long).show(); } else { toast.maketext(getapplicationcontext(), "sign error", toast.length_long) .show(); } } }); } } }); } }
parseuser.logout
// locate button in welcome.xml logout = (button) findviewbyid(r.id.logout); // logout button click listener logout.setonclicklistener(new onclicklistener() { /** called when user clicks logout button */ public void onclick(view arg0) { // logout current user parseuser.logout(); finish(); } });
button
<button android:id="@+id/camerabutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/logout" android:layout_centerhorizontal="true" android:onclick="sendmessage" android:text="@string/camerabtn" />
the android:onclick="sendmessage"
line says when button clicked, sendmessage
method should called. remove line code unless have sendmessage
method.
intents
/** called when user clicks camera button */ public void onclick(view view) { // send user camera.class intent intent = new intent(welcome.this, camera.class); startactivity(intent); }
new intent(welcome.this, camera.class)
acceptable way start new activity. using welcome.this
instead of this
, grabbing context.
Comments
Post a Comment