Search code examples
javaandroidonclicklistenerbuttonclickno-response

Android on click button not responding


I have a login activity in my android application. It consists of two EditText widgets(Username, Password) and two buttons(Login,Register). The problem is when I click the buttons there's no response and no errors in my logcat. I've imported android.view.View.OnClickListener and I've set OnClickListeners.

The weird thing is, it worked perfectly when I used FragmentActivities/FragmentViews, I received JSON responses and logged in, but when I changed back to just "normal" activities it simply had no response. Any help on this, Maybe there's something I'm missing but not seeing? Code below.

Login.java

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class Login extends Activity implements OnClickListener
{
    private EditText user, pass;
    private Button mSubmit, mRegister;

    private ProgressDialog pDialog;

    JSONParser jsonParser = new JSONParser();
    private static final String LOGIN_URL = "http://************/tappedin/login.php";

    private static final String TAG_SUCCESS = "success";
    private static final String TAG_MESSAGE = "message";

    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_layout);

        private EditText user, pass;
        private Button mSubmit, mRegister;

        mSubmit = (Button) findViewById(R.id.butLogin);
        mRegister = (Button) findViewById(R.id.butRegister);

        mSubmit.setOnClickListener(this);
        mRegister.setOnClickListener(this);
    }
}

@Override
public void onClick(View v) 
{
// TODO Auto-generated method stub
   switch (v.getId())
   {
      case R.id.butLogin:
         new AttemptLogin().execute();
         break;
      case R.id.butRegister:
         Intent i = new Intent(this, Register.class);
         startActivity(i);
         break;
      default:
         break;
    }
}
class AttemptLogin extends AsyncTask<String, String, String> 
{
        boolean failure = false;
        @Override
        protected void onPreExecute() 
        {
            super.onPreExecute();
            pDialog = new ProgressDialog(Login.this);
            pDialog.setMessage("Loggin in...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... args)  
        {
            int success;
            String username = user.getText().toString();
            String password = pass.getText().toString();
            try 
            {
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("username", username));
                params.add(new BasicNameValuePair("password", password));

                Log.d("request!", "starting");
                JSONObject json = jsonParser.makeHttpRequest(
                       LOGIN_URL, "POST", params);

                Log.d("Login attempt", json.toString());

                success = json.getInt(TAG_SUCCESS);
                if (success == 1) 
                {
                    Log.d("Login Successful!", json.toString());
                    Intent i = new Intent(Login.this, Profile.class);
                    finish();
                    startActivity(i);
                    return json.getString(TAG_MESSAGE);
                }
                else
                {
                    Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                    return json.getString(TAG_MESSAGE);
                }
            } 
            catch (JSONException e) 
            {
                e.printStackTrace();
            }
            return null;
        }
        protected void onPostExecute(String file_url) 
        {
           pDialog.dismiss();
           if (file_url != null)
           {
              Toast.makeText(Login.this, file_url, Toast.LENGTH_LONG).show();               
           }
        }
   }

}

login_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/AppTheme"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:id="@+id/llogin"
tools:context="com.TappedIn.prjtappedin.MainActivity" >

<ImageView
    android:id="@+id/imvLogo"
    android:layout_width="wrap_content"
    android:layout_height="170dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:src="@drawable/tappedin" />

<EditText
    android:id="@+id/username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/imvLogo"
    android:layout_alignRight="@+id/imvLogo"
    android:layout_below="@+id/imvLogo"
    android:layout_marginTop="38dp"
    android:ems="10"
    android:hint="Username"
    android:singleLine="true" >
    <requestFocus />
 </EditText>

<Button
    android:id="@+id/butRegister"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/butLogin"
    android:layout_alignRight="@+id/butLogin"
    android:layout_below="@+id/butLogin"
    android:layout_marginTop="16dp"
    android:text="Register"/>

<TextView
    android:id="@+id/txvForgotpw"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/butRegister"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="11dp"
    android:autoLink="web"
    android:text="Forgot Password" 
    />

<EditText
    android:id="@+id/password"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/username"
    android:layout_alignRight="@+id/username"
    android:layout_below="@+id/username"
    android:layout_marginTop="13dp"
    android:ems="10"
    android:hint="Password"
    android:inputType="textPassword"
    android:lines="@integer/lines"
    android:singleLine="true" >

</EditText>

<Button
    android:id="@+id/butLogin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/password"
    android:layout_alignRight="@+id/password"
    android:layout_below="@+id/password"
    android:layout_marginTop="16dp"
    android:text="Login"/>
</RelativeLayout>

Register.java

package com.TappedIn.prjtappedin;

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

public class Register extends Activity
{
    public void onCreateView(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register_layout);
    }
}

Register_layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lregister"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical"
android:scrollbars="vertical" >


<EditText
    android:id="@+id/txtName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/txtLastname"
    android:layout_alignRight="@+id/txtLastname"
    android:layout_below="@+id/imvLogo"
    android:ems="10"
    android:hint="First Name"
    android:inputType="textPersonName"
    android:singleLine="true" />

<EditText
    android:id="@+id/txtLastname"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/imvLogo"
    android:layout_alignRight="@+id/imvLogo"
    android:layout_below="@+id/txtName"
    android:ems="10"
    android:hint="Last Name"
    android:inputType="textPersonName"
    android:singleLine="true" />

<EditText
    android:id="@+id/Username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/txtEmail"
    android:layout_alignRight="@+id/txtEmail"
    android:layout_below="@+id/txtEmail"
    android:ems="10"
    android:hint="Username"
    android:singleLine="true" />

<EditText
    android:id="@+id/txtPassword"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/Username"
    android:layout_alignRight="@+id/Username"
    android:layout_below="@+id/Username"
    android:ems="10"
    android:hint="Password"
    android:inputType="textPassword"
    android:singleLine="true" />

<EditText
    android:id="@+id/RPassword"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/txtPassword"
    android:layout_alignRight="@+id/txtPassword"
    android:layout_below="@+id/txtPassword"
    android:ems="10"
    android:hint="Re-type Password"
    android:inputType="textPassword"
    android:singleLine="true" />

<AutoCompleteTextView
    android:id="@+id/autoCompleteTextView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/RPassword"
    android:layout_alignRight="@+id/RPassword"
    android:layout_below="@+id/RPassword"
    android:ems="10"
    android:hint="Location(City/Country)"
    android:singleLine="true" />

<Button
    android:id="@+id/btnRegister"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/autoCompleteTextView1"
    android:layout_alignRight="@+id/autoCompleteTextView1"
    android:layout_below="@+id/autoCompleteTextView1"
    android:text="Register" />

<EditText
    android:id="@+id/txtEmail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/txtLastname"
    android:layout_alignRight="@+id/txtLastname"
    android:layout_below="@+id/txtLastname"
    android:ems="10"
    android:hint="Email Address"
    android:inputType="textEmailAddress"
    android:singleLine="true" />

<ImageView
    android:id="@+id/imvLogo"
    android:layout_width="match_parent"
    android:layout_height="170dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:src="@drawable/tappedin" />
</RelativeLayout>

MainActivity.java

package com.TappedIn.prjtappedin;

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


public class MainActivity extends Activity
{
   @Override
   protected void onCreate(Bundle savedInstanceState) 
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.login_layout);
   }
}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
</LinearLayout>

Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.TappedIn.prjtappedin"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="20" />    
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppBaseTheme" >

    <activity
        android:name="MainActivity"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Holo.Light.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Login"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Holo.Light" >
    </activity>
    <activity
        android:name=".Register"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Holo.Light" >
    </activity>    
    <activity
        android:name=".Profile"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Holo.Light" >
    </activity>       
</application>
</manifest>

Solution

  • I fixed this by starting the whole project from scratch. I think the issue was with my MainActivity.java. In my new project I used Login.java as my main activity and it worked perfect. All that's changed is the name of my Main Activity which is now LoginActivity.java and inside this is the exact same code as my old Login.java class. I would love to know what the actual issue was, but it's working now. Thanks for the help guys.

    My new code for my main activity:

    LoginActivity.java

     import java.util.ArrayList;
     import java.util.List;
    
     import org.apache.http.NameValuePair;
     import org.apache.http.message.BasicNameValuePair;
     import org.json.JSONException;
     import org.json.JSONObject;
    
     import android.app.Activity;
     import android.app.ProgressDialog;
     import android.content.Intent;
     import android.os.AsyncTask;
     import android.os.Bundle;
     import android.util.Log;
     import android.view.View;
     import android.view.View.OnClickListener;
     import android.widget.Button;
     import android.widget.EditText;
     import android.widget.Toast;
    
    
     public class LoginActivity extends Activity implements OnClickListener
     {
         private EditText user, pass;
         private Button mSubmit, mRegister;
    
         private ProgressDialog pDialog;
    
         JSONParser jsonParser = new JSONParser();
    
         private static final String LOGIN_URL = "http://***.***.*.**.****/tappedin/login.php";
    
    
         private static final String TAG_SUCCESS = "success";
         private static final String TAG_MESSAGE = "message";
    
         @Override
         protected void onCreate(Bundle savedInstanceState) 
         {
             // TODO Auto-generated method stub
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_login);
    
             user = (EditText)findViewById(R.id.username);
             pass = (EditText)findViewById(R.id.password);
    
             mSubmit = (Button)findViewById(R.id.butLogin);
             mRegister = (Button)findViewById(R.id.butRegister);
    
             mSubmit.setOnClickListener(this);
             mRegister.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) 
        {
           // TODO Auto-generated method stub
           switch (v.getId()) 
           {
               case R.id.butLogin:
               new AttemptLogin().execute();
               break;
               case R.id.btnRegister:
               Intent i = new Intent(this, Register.class);
               startActivity(i);
               break;
               default:
               break;
           }
        }
    
        class AttemptLogin extends AsyncTask<String, String, String> {
    
        boolean failure = false;
    
        @Override
        protected void onPreExecute() 
        {
            super.onPreExecute();
            pDialog = new ProgressDialog(LoginActivity.this);
            pDialog.setMessage("Logging in...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
    
        @Override
        protected String doInBackground(String... args) 
        {
            // TODO Auto-generated method stub
            int success;
            String username = user.getText().toString();
            String password = pass.getText().toString();
            try 
            {
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("username", username));
                params.add(new BasicNameValuePair("password", password));
    
                Log.d("request!", "starting");
                JSONObject json = jsonParser.makeHttpRequest(
                       LOGIN_URL, "POST", params);
    
                Log.d("Login attempt", json.toString());
    
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    Log.d("Login Successful!", json.toString());
                    Intent i = new Intent(LoginActivity.this, Profile.class);
                    finish();
                    startActivity(i);
                    return json.getString(TAG_MESSAGE);
                }else{
                    Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                    return json.getString(TAG_MESSAGE);
    
                }
            } 
            catch (JSONException e) 
            {
                e.printStackTrace();
            }
    
            return null;
    
        }
        protected void onPostExecute(String file_url) 
        {
            pDialog.dismiss();
            if (file_url != null)
            {
                Toast.makeText(LoginActivity.this, file_url, Toast.LENGTH_LONG).show();
            }
    
        }
    
      }
    
    }`