2016-07-01 2 views
3

Я создал активность регистра, которая отправляет данные в базу данных, и кнопка должна открыть другое действие, которое является MainActivity. Код работает отлично, но проблема одна. Когда кнопка нажата, она отвечает и отправляет информацию в базу данных, но действие не меняется.Код не работает, кнопка не отвечает

Как я могу изменить код, чтобы открыть другое мероприятие?

RegisterRequest.java

public class RegisterRequest extends StringRequest { 

private static final String REGISTER_REQUEST_URL = "http://loginacti.comli.com/Register.php"; 
private Map<String, String> params; 

public RegisterRequest(String Expect, String Prize, String Name, String Email, Response.Listener<String> listener) { 
     super(Method.POST, REGISTER_REQUEST_URL, listener, null); 
    params = new HashMap<>(); 
    params.put("Expect", Expect); 
    params.put("Prize", Prize); 
    params.put("Name", Name); 
    params.put("Email", Email); 

} 

@Override 
public Map<String, String> getParams() { 
    return params; 
} 

RegisterActivity.java

public class RegisterActivity extends AppCompatActivity { 

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

    final EditText etUknown = (EditText) findViewById(R.id.etUknown); 
    final EditText etPrize = (EditText) findViewById(R.id.etPrize); 
    final EditText etName = (EditText) findViewById(R.id.etName); 
    final EditText etEmail = (EditText) findViewById(R.id.etEmail); 
    final Button bRegister = (Button) findViewById(R.id.bRegister); 

    bRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final String Expect = etUknown.getText().toString(); 
      final String Prize = etPrize.getText().toString(); 
      final String Name = etName.getText().toString(); 
      final String Email = etEmail.getText().toString(); 


      Response.Listener<String> responseListener = new Response.Listener<String>(){ 

       @Override 
       public void onResponse(String response) { 
        try { 
         JSONObject jsonResponse = new JSONObject(response); 
         boolean success = jsonResponse.getBoolean("success"); 
         if (success){ 
          Intent intent = new Intent(RegisterActivity.this, MainActivity.class); 
          RegisterActivity.this.startActivity(intent); 
         }else{ 
          AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this); 
          builder.setMessage("Register Failed") 
            .setNegativeButton("Retry", null) 
            .create() 
            .show(); 

         } 

        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }; 


      RegisterRequest registerRequest = new RegisterRequest(Expect, Prize, Name, Email, responseListener); 
      RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this); 
      queue.add(registerRequest); 
     } 
    }); 
} 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

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


    final TextView registerLink = (TextView) findViewById(R.id.eRegister); 

    registerLink.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent registerIntent = new Intent(MainActivity.this, RegisterActivity.class); 
      MainActivity.this.startActivity(registerIntent); 
     } 
    }); 
} 

манифеста

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".RegisterActivity"></activity> 
</application> 

activity_register.xml

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/etUknown" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="60dp" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:hint="Numbers" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/etPrize" 
    android:hint="Secret CD" 
    android:layout_below="@+id/etUknown" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignRight="@+id/etUknown" 
    android:layout_alignEnd="@+id/etUknown" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:ems="10" 
    android:id="@+id/etName" 
    android:hint="Full Name" 
    android:layout_below="@+id/etPrize" 
    android:layout_alignRight="@+id/etPrize" 
    android:layout_alignEnd="@+id/etPrize" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textEmailAddress" 
    android:ems="10" 
    android:id="@+id/etEmail" 
    android:hint="New Email" 
    android:layout_below="@+id/etName" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignRight="@+id/etName" 
    android:layout_alignEnd="@+id/etName" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Register" 
    android:id="@+id/bRegister" 
    android:layout_marginTop="46dp" 
    android:layout_below="@+id/etEmail" 
    android:layout_centerHorizontal="true" /> 
+0

Посмотрите на свой код. RegisterActivity находится в манифесте – babadaba

+1

У вас есть ошибки в logcat после нажатия кнопки? –

+0

У меня есть RegisterActivity на манифесте. Нет, потому что я попробовал на реальном устройстве – Tadas

ответ

1

Добавить еще один Permission ACCESS_NETWORK_STATE

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    </activity> 
    <activity android:name=".RegisterActivity"></activity> 
</application> 
+0

Это действительно помогло мне! – Tadas

+0

приветствуется @Tadas bro .... –

2

В OnClick вы не можете использовать .finish(), который, как правило, выйти из текущей деятельности. Однако вы можете сделать метод exitActivity(), а затем вызвать его из вашего onclick. Таким образом, в конце вашего OnClick после того, как вы написали в вашей базе данных сделать попробовать блок с:

try { 
    exitActivity(); 
} 
catch (Exception e){ 
     e.printStackTrace(); 
} 

И тогда в вашем RegisterActivity сделать exitActivity(), как это:

private void exitActivity(){ 
    this.finish(); 
} 

Вы хотите сделайте это, потому что если вы сделаете это по-своему, вы будете делать несколько экземпляров своей основной активности при попытке зарегистрировать больше предметов. В конечном итоге это может привести к тому, что ваше приложение закончится.

+0

Подождите, я попробую сейчас – Tadas

1

Вызывает ли это ошибка или просто ничего не делает?

Также вы можете попробовать:

Intent registerIntent = new Intent(this, MainActivity.class); 
startActivity(registerIntent); 

вместо

Intent intent = new Intent(RegisterActivity.this, MainActivity.class); 
RegisterActivity.this.startActivity(intent); 
+0

Код показывает ошибку, у (это, MainActivity.class) есть ошибка – Tadas

1

Попробуйте 1 строки кода в методе 'OnClick':

startActivity(new Intent(MainActivity.this, RegisterActivity.class)); 
+0

Это определенно сработало! – Tadas

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