package com.example.citrusclient.views; import android.content.Intent; import android.os.Bundle; // import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; // import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import com.example.citrusclient.Citrus; import com.example.citrusclient.R; import com.example.citrusclient.rest.AccountsRest; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; public class LoginActivity extends AppCompatActivity { private Retrofit retrofit; private AccountsRest accountsRest; private Citrus citrus; //画面起動時 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_login); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); //citrusと連携 citrus = (Citrus) this.getApplication(); //通信の初期化 this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/citrus/") .addConverterFactory(JacksonConverterFactory.create()) .build(); this.accountsRest = retrofit.create(AccountsRest.class); Button loginButton = (Button)findViewById(R.id.loginButton); loginButton.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ //テキストを文字列で認識 EditText editid = (EditText) findViewById(R.id.username); String id = editid.getText().toString().trim(); EditText editpw = (EditText) findViewById(R.id.password); String pw = editpw.getText().toString().trim(); final Handler handler = new Handler(); //入力欄が空欄の時 if(id.isEmpty() && pw.isEmpty() && id.trim().isEmpty() && pw.trim().isEmpty()){ System.out.println("不適切入力"); ((TextView)findViewById(R.id.textView_respons)).setText("適切に入力してください"); //Intent intent = new Intent(LoginActivity.this,MainActivity.class); //startActivity(intent); }else if(!id.isEmpty() && !pw.isEmpty() && !id.trim().isEmpty() && !pw.trim().isEmpty() ){ //入力欄が全て適切に入力された場合の処理 Call<String> call = accountsRest.login(id,pw); call.enqueue(new Callback<String>() { @Override public void onResponse(Call<String> call, Response<String> response) { if (response.isSuccessful()){ if (!response.body().equals("null")) { System.out.println("通信成功"); //端末にtoken.id登録 String token = response.body(); citrus.setToken(token); citrus.setAccountId(id); //画面遷移 handler.post(new Runnable() { @Override public void run() { Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); } }); }else{ ((TextView)findViewById(R.id.textView_respons)).setText(("パスワードが間違っています")); } }else{ //通信可能(ただしエラーが発生した場合) //404がPW入力されてないときだけど、前で定義しているからいらないよね..? System.out.println("通信可能"); if(response.code()==404){ ((TextView)findViewById(R.id.textView_respons)).setText(("IDが間違っています")); } } } //通信失敗 @Override public void onFailure(Call<String> call, Throwable t) { System.out.println("通信失敗"); System.out.println(t); } }); } } }); Button newButton = (Button)findViewById(R.id.newAccount); newButton.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ Intent intent = new Intent(LoginActivity.this,SignUpActivity.class); startActivity(intent); } }); } }