2016-02-03 2 views
1

Итак, мой первый вход в систему работает. Нет проблем с этим. Теперь, когда я пытаюсь использовать одно и то же приложение для регистрации, он просто перестает работать. Я потерялся здесь, и я новичок в разработке Android, поэтому я действительно не понимаю эту ошибку.IllegalStateException брошен для моего приложения в Android

MainActivity.java

public class MainActivity extends AppCompatActivity { 
    EditText UsernameEt, PasswordEt; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     UsernameEt = (EditText) findViewById(R.id.etUserName); 
     PasswordEt = (EditText) findViewById(R.id.etPassword); 

    } 

    public void OnLogin(View view){ 
     String username = UsernameEt.getText().toString(); 
     String password = PasswordEt.getText().toString(); 
     String type = "login"; 

     BackgroundWorker backgroundWorker = new BackgroundWorker(this); 

     backgroundWorker.setOnTaskFinishedListener(new BackgroundWorker.OnTaskFinishedListener() { 

      @Override 
      public void onTaskFinished(String result) { 
       // Now you have the result of your login here. 
       // Result should be "admin", "user", or "failed" 
       // You can now create an intent and open the page 
       // to your next activity. 
       switch (result) { 
        case "admin": 
         // Create your intent. 
         Intent adminIntent = new Intent(MainActivity.this, AdminPageActivity.class); 
         // Start the admin page activity. 
         startActivity(adminIntent); 
         break; 

        case "user": 
         // Create your intent. 
         Intent userIntent = new Intent(MainActivity.this, UserPageActivity.class); 
         // Start the user page activity. 
         startActivity(userIntent); 
         break; 

        default: 
         // Login failed. 
         Intent failIntent = new Intent(MainActivity.this, MainActivity.class); 
         startActivity(failIntent); 
         break; 
       } 
      } 
     }); 

     backgroundWorker.execute(type, username, password); 
    } 

    public void openRegistration(View view){ 
     startActivity(new Intent(this, Registration.class)); 
    } 
} 

Registration.java

public class Registration extends AppCompatActivity { 
    EditText NameEt, RoleEt, UsernameEt, PasswordEt; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_registration); 

     NameEt = (EditText) findViewById(R.id.etName); 
     UsernameEt = (EditText) findViewById(R.id.etUserName); 
     PasswordEt = (EditText) findViewById(R.id.etPassword); 
     RoleEt = (EditText) findViewById(R.id.etRole); 
    } 

    public void OnRegister(View view) { 
     String str_name = NameEt.getText().toString(); 
     String str_username = UsernameEt.getText().toString(); 
     String str_password = PasswordEt.getText().toString(); 
     String str_role = RoleEt.getText().toString(); 
     String type = "register"; 

     BackgroundWorker backgroundWorker = new BackgroundWorker(this); 
     backgroundWorker.execute(type, str_name, str_username, str_password, str_role); 
    } 

} 

BackgroundWorker.java

public class BackgroundWorker extends AsyncTask<String,Void,String> { 
    Context context; 
    AlertDialog alertDialog; 
    BackgroundWorker (Context ctx) { 
     context = ctx; 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     String type = params[0]; 
     String login_url = "http://ipaddress/folder/login.php"; 
     String register_url = "http://ipaddress/folder/register.php"; 
     if(type.equals("login")) { 
      try { 
       String user_name = params[1]; 
       String password = params[2]; 
       URL url = new URL(login_url); 
       HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       httpURLConnection.setDoInput(true); 
       OutputStream outputStream = httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
       String post_data = URLEncoder.encode("user_name","UTF-8")+"="+URLEncoder.encode(user_name,"UTF-8") +"&" + URLEncoder.encode("password","UTF-8") + "=" + URLEncoder.encode(password,"UTF-8"); 
       bufferedWriter.write(post_data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       outputStream.close(); 
       InputStream inputStream = httpURLConnection.getInputStream(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
       String result=""; 
       String line=""; 
       while((line = bufferedReader.readLine())!= null) { 
        result += line; 
       } 
       bufferedReader.close(); 
       inputStream.close(); 
       httpURLConnection.disconnect(); 
       return result; 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } else if(type.equals("register")) { 
      try { 
       String name = params[1]; 
       String username = params[2]; 
       String password = params[3]; 
       String role = params[4]; 
       URL url = new URL(register_url); 
       HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       httpURLConnection.setDoInput(true); 
       OutputStream outputStream = httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
       String post_data = URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(name,"UTF-8") + "&" + URLEncoder.encode("username", "UTF-8")+"="+URLEncoder.encode(username,"UTF-8") + "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password,"UTF-8") + "&" + URLEncoder.encode("role","UTF-8") + "=" + URLEncoder.encode(role,"UTF-8"); 
       bufferedWriter.write(post_data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       outputStream.close(); 
       InputStream inputStream = httpURLConnection.getInputStream(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
       String result=""; 
       String line=""; 
       while((line = bufferedReader.readLine())!= null) { 
        result += line; 
       } 
       bufferedReader.close(); 
       inputStream.close(); 
       httpURLConnection.disconnect(); 
       return result; 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 

    public interface OnTaskFinishedListener { 
     void onTaskFinished(String result); 
    } 

    // Member property to reference listener. 
    private OnTaskFinishedListener mOnTaskFinishedListener; 

    // Setter for listener. 
    public void setOnTaskFinishedListener(OnTaskFinishedListener listener) { 
     mOnTaskFinishedListener = listener; 
    } 

    @Override 
    protected void onPreExecute() { 
     alertDialog = new AlertDialog.Builder(context).create(); 
     alertDialog.setTitle("Login Status"); 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     alertDialog.setMessage(result); 
     alertDialog.show(); 

     switch (result) { 
      case "failed": 
       // Login failed. 
       break; 
      case "user": // Login successful, result (role) is "user" 
       result = "user"; 
       break; 
      case "admin": // Login successful, result (role) is "admin" 
       result = "admin"; 
       break; 
     } 

     if (mOnTaskFinishedListener != null) { 
      mOnTaskFinishedListener.onTaskFinished(result); 
     } 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
     super.onProgressUpdate(values); 
    } 
} 

Я только что добавил еще if else для регистрации на backgroundworker.java.

register.php

<?php 

require "conn.php"; 

$name = $_POST["name"]; 
$username = $_POST["username"]; 
$password = $_POST["password"]; 
$role = $_POST["role"]; 


$mysql_qry = "insert into employee_data (name, username, password, role) values ('$name', '$username', '$password', '$role')"; 

if($conn->query($mysql_qry) === TRUE){ 
    echo "success"; 
} 
else { 
    echo "fail".$mysql_qry."<br>".$conn->error; 
} 
$conn->close(); 

?> 

Я застрял здесь, пожалуйста, помогите.

журнал ошибок

Process: com.example.user.mysqldemo, PID: 1325 
java.lang.IllegalStateException: Could not execute method for android:onClick 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:275) 
     at android.view.View.performClick(View.java:4438) 
     at android.view.View$PerformClick.run(View.java:18422) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5001) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
     at dalvik.system.NativeStart.main(Native Method) 

Caused by: java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270) 
at android.view.View.performClick(View.java:4438) 
at android.view.View$PerformClick.run(View.java:18422) 
at android.os.Handler.handleCallback(Handler.java:733) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5001) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
at dalvik.system.NativeStart.main(Native Method) 

Caused by: java.lang.NullPointerException 
     at com.example.user.mysqldemo.Registration.OnRegister(Registration.java:28) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270) 
at android.view.View.performClick(View.java:4438) 
at android.view.View$PerformClick.run(View.java:18422) 
at android.os.Handler.handleCallback(Handler.java:733) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5001) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
at dalvik.system.NativeStart.main(Native Method) 

6.Activity_registration.xml

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

<TextView 
    android:layout_width="wrap_content" 
    android:text="Name" 
    android:layout_height="wrap_content" /> 

<EditText 
    android:id="@+id/etName" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="10dp"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:text="Username" 
    android:layout_height="wrap_content" /> 

<EditText 
    android:id="@+id/etUsername" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="10dp"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:text="Password" 
    android:layout_height="wrap_content" /> 

<EditText 
    android:id="@+id/etPassword" 
    android:layout_width="match_parent" 
    android:inputType="textPassword" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="10dp"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:text="Role" 
    android:layout_height="wrap_content" /> 

<EditText 
    android:id="@+id/etRole" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="10dp"/> 

<Button 
    android:id="@+id/bRegister" 
    android:text="Register" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:onClick="OnRegister"/> 

+1

Пожалуйста, зарегистрируйте ошибку, которую вы получаете –

+0

Пожалуйста, разместите свой logcat – Raghavendra

+0

только что отредактировал ошибку. не уверен, как поместить его в формат для stackoverflow. извините, что –

ответ

1

При добавлении атрибута , то вы должны сделать widgetclickable, а также. Обновить xml до

<Button 
    android:id="@+id/bRegister" 
    android:text="Register" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:onClick="OnRegister"/> 

Надеюсь, что это поможет.

UPDATE эта линия UsernameEt = (EditText) findViewById(R.id.etUserName); является виновником в register_activity xml не содержит идентификатор etUserName. Он указывает на какой-то другой xml, вместо этого этот xml содержит этот идентификатор etUsername

+0

awww .. вы меня очень возбудили на мгновение. но, к сожалению. он все еще перестает работать .. снова мне грустно .. lol. но все же tq. –

+0

Вы видели обновленный ответ?'etUserName' должно быть' etUsername', поскольку регистрация активности xml не содержит 'etUserName' –

+0

ooooo ... я не понял, что вы обновили свой ответ. Я делал xml-файл раньше .. lol .. теперь все работает. tqvm для помощи .. теперь я чувствую себя глупо, чтобы испортить верхний и нижний регионы .. demmit .. tq again .. –

Смежные вопросы