I'm trying to start this activity_main.xlm after a user's registration flow, but when I click on the button, the app closes. I work a little time with Android but I couldn't identify this error.
I need that after clicking the register button, the app remains pressed and calls activity_main.xml
As Logcat shows, the data passes through the api {"insert":"ok"}, but the application closes and does not call activity_main.
RegisterActivity.java
public class RegisterActivity extends AppCompatActivity {
EditText et_name, et_email, et_password, et_repassword;
Button btn_register, btn_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
getSupportActionBar().setTitle("REGISTER");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
et_name = findViewById(R.id.et_name);
et_email =findViewById(R.id.et_email);
et_password = findViewById(R.id.et_password);
et_repassword = findViewById(R.id.et_repassword);
btn_register= findViewById(R.id.btn_register);
btn_login = findViewById(R.id.btn_login);
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(TextUtils.isEmpty(et_email.getText().toString()) || TextUtils.isEmpty(et_name.getText().toString()) || TextUtils.isEmpty(et_password.getText().toString()) || TextUtils.isEmpty(et_repassword.getText().toString())){
String message = "All input required";
Toast.makeText(RegisterActivity.this, message,Toast.LENGTH_LONG).show();
}else {
RegisterRequest registerRequest = new RegisterRequest();
registerRequest.setName_app(et_name.getText().toString());
registerRequest.setEmail_app(et_email.getText().toString());
registerRequest.setPassword_app(et_password.getText().toString());
sendRegister(registerRequest);
}
}
});
}
private void sendRegister(RegisterRequest registerRequest) {
Call<RegisterResponse> registerResponseCall=ApiClient.getService().registerUser(registerRequest);
registerResponseCall.enqueue(new Callback<RegisterResponse>() {
@Override
public void onResponse(Call<RegisterResponse> call, Response<RegisterResponse> response) {
if (response.isSuccessful()){
String message = "Successful";
Toast.makeText(RegisterActivity.this, message,Toast.LENGTH_LONG).show();
startActivity(new Intent(RegisterActivity.this,MainActivity.class));
finish();
}else{
String message = "An error occurred please try again later...";
Toast.makeText(RegisterActivity.this, message,Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<RegisterResponse> call, Throwable t) {
String message = t.getLocalizedMessage();
Toast.makeText(RegisterActivity.this, message,Toast.LENGTH_LONG).show();
}
});
}
}
activity_register.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".RegisterActivity">
<TextView
android:id="@ id/tv_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/register"
android:textAlignment="center"
android:textSize="50sp"
android:layout_marginStart="25dp"
android:layout_marginBottom="5dp"
android:fontFamily="@font/indigo_daisy"
android:layout_marginTop="60dp"/>
<TextView
android:id="@ id/tv_subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tag"
android:textSize="17sp"
android:fontFamily="@font/roboto_regular"
android:layout_marginStart="25dp"
android:layout_marginBottom="50dp"/>
<EditText
android:id="@ id/et_name"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="@string/your_name"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:padding="15dp"
android:inputType="textPersonName"
android:fontFamily="@font/roboto_regular"
android:background="@drawable/et_custom"
android:textSize="15sp" />
<EditText
android:id="@ id/et_email"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="@string/e_mail"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:padding="15dp"
android:fontFamily="@font/roboto_regular"
android:inputType="textEmailAddress"
android:background="@drawable/et_custom"
android:textSize="15sp" />
<EditText
android:id="@ id/et_password"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="@string/password"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:padding="15dp"
android:fontFamily="@font/roboto_regular"
android:inputType="textPassword"
android:background="@drawable/et_custom"
android:textSize="15sp"
app:errorEnabled="true"/>
<EditText
android:id="@ id/et_repassword"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="@string/re_type_password"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:padding="15dp"
android:fontFamily="@font/roboto_regular"
android:inputType="textPassword"
android:background="@drawable/et_custom"
android:textSize="15sp"
app:errorEnabled="true"
app:hintEnabled="false"
app:passwordToggleEnabled="true"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@ id/btn_register"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_custom"
android:fontFamily="@font/roboto_regular"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="30dp"
android:layout_centerInParent="true"
android:textColor="@android:color/white"
android:text="@string/register"/>
<Button
android:id="@ id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="200dp"
android:background="@drawable/btn_custom"
android:fontFamily="@font/roboto_regular"
android:text="@string/login"
android:textColor="@android:color/white" />
</RelativeLayout>
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
LoginResponse loginResponse;
@Override
protected void onCreate(Bundle savedInstanceState) {
getSupportActionBar().hide();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
if (intent.getExtras() != null) {
loginResponse = (LoginResponse) intent.getSerializableExtra("data");
Log.e("TAG", "====>" loginResponse.getEmail());
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<ImageView
android:src="@drawable/ic_launcher_foreground"
android:layout_width="188dp"
android:layout_height="200dp"
android:background="@color/colorPrimaryDark"/>
<TextView
android:text="@string/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:textColor="@color/colorPrimaryDark"/>
</LinearLayout>
manifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:usesCleartextTraffic="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".RegisterActivity" />
<activity android:name=".MainActivity"/>
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Logcat
2021-12-09 22:29:45.631 22677-23634/com.guincho.chamemeuguincho E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.guincho.chamemeuguincho, PID: 22677
java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.art/javalib/core-oj.jar)
at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1.onResponse(DefaultCallAdapterFactory.java:77)
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:150)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
2021-12-09 22:29:45.675 22677-22677/com.guincho.chamemeuguincho I/ViewRootImpl@9ebca35[LoginActivity]: stopped(false) old=true
2021-12-09 22:29:45.678 22677-23634/com.guincho.chamemeuguincho I/Process: Sending signal. PID: 22677 SIG: 9
CodePudding user response:
You should not get the support action bar before setcontentview is called.
Simply, move getSupportActionBar().hide();
after setContentView(R.layout.activity_main);
and it should not crash anymore
Also please provide crash logs in the future, so we can debug quicker