diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 17e4369..1719529 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -43,7 +43,11 @@
implementation(libs.recyclerview)
implementation(libs.retrofit2.retrofit)
implementation(libs.converter.jackson)
+ implementation(libs.navigation.runtime.android)
testImplementation(libs.junit)
androidTestImplementation(libs.ext.junit)
androidTestImplementation(libs.espresso.core)
+ implementation(libs.navigation.fragment)
+ implementation(libs.navigation.ui)
+
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 041ace3..2179e9b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -17,20 +17,22 @@
android:name=".views.LoginActivity" />
-
+
+
+
-
-
-
+
+
-
-
-
-
+
+
+
diff --git a/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardFragment.java b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardFragment.java
new file mode 100644
index 0000000..2dcc990
--- /dev/null
+++ b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardFragment.java
@@ -0,0 +1,37 @@
+package com.example.tampopo_client.ui.dashboard;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.example.tampopo_client.databinding.FragmentDashboardBinding;
+
+public class DashboardFragment extends Fragment {
+
+ private FragmentDashboardBinding binding;
+
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ DashboardViewModel dashboardViewModel =
+ new ViewModelProvider(this).get(DashboardViewModel.class);
+
+ binding = FragmentDashboardBinding.inflate(inflater, container, false);
+ View root = binding.getRoot();
+
+ final TextView textView = binding.textDashboard;
+ dashboardViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
+ return root;
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardViewModel.java b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardViewModel.java
new file mode 100644
index 0000000..34b0dde
--- /dev/null
+++ b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardViewModel.java
@@ -0,0 +1,19 @@
+package com.example.tampopo_client.ui.dashboard;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+public class DashboardViewModel extends ViewModel {
+
+ private final MutableLiveData mText;
+
+ public DashboardViewModel() {
+ mText = new MutableLiveData<>();
+ mText.setValue("This is dashboard fragment");
+ }
+
+ public LiveData getText() {
+ return mText;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tampopo_client/ui/home/HomeFragment.java b/app/src/main/java/com/example/tampopo_client/ui/home/HomeFragment.java
new file mode 100644
index 0000000..e753b82
--- /dev/null
+++ b/app/src/main/java/com/example/tampopo_client/ui/home/HomeFragment.java
@@ -0,0 +1,37 @@
+package com.example.tampopo_client.ui.home;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.example.tampopo_client.databinding.FragmentHomeBinding;
+
+public class HomeFragment extends Fragment {
+
+ private FragmentHomeBinding binding;
+
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ HomeViewModel homeViewModel =
+ new ViewModelProvider(this).get(HomeViewModel.class);
+
+ binding = FragmentHomeBinding.inflate(inflater, container, false);
+ View root = binding.getRoot();
+
+ final TextView textView = binding.textHome;
+ homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
+ return root;
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tampopo_client/ui/home/HomeViewModel.java b/app/src/main/java/com/example/tampopo_client/ui/home/HomeViewModel.java
new file mode 100644
index 0000000..317e835
--- /dev/null
+++ b/app/src/main/java/com/example/tampopo_client/ui/home/HomeViewModel.java
@@ -0,0 +1,19 @@
+package com.example.tampopo_client.ui.home;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+public class HomeViewModel extends ViewModel {
+
+ private final MutableLiveData mText;
+
+ public HomeViewModel() {
+ mText = new MutableLiveData<>();
+ mText.setValue("This is home fragment");
+ }
+
+ public LiveData getText() {
+ return mText;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java
index c7bb399..4e60537 100644
--- a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java
+++ b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java
@@ -1,26 +1,58 @@
package com.example.tampopo_client.views;
import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
import androidx.activity.EdgeToEdge;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.navigation.NavController;
+import androidx.navigation.Navigation;
+import com.example.tampopo_client.databinding.ActivityFriendBinding;
+import androidx.navigation.ui.AppBarConfiguration;
+import androidx.navigation.ui.NavigationUI;
import com.example.tampopo_client.R;
+import com.google.android.material.bottomnavigation.BottomNavigationView;
public class FriendActivity extends AppCompatActivity {
-
+ private ActivityFriendBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- EdgeToEdge.enable(this);
- setContentView(R.layout.activity_friend);
- 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;
- });
+
+// EdgeToEdge.enable(this);
+// setContentView(R.layout.activity_friend);
+// 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;
+// });
+// }
+ binding = ActivityFriendBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+
+ Toolbar toolbar = findViewById(R.id.actionbar);
+ setSupportActionBar(toolbar);
+
+ BottomNavigationView navView = findViewById(R.id.nav_view);
+ // Passing each menu ID as a set of Ids because each
+ // menu should be considered as top level destinations.
+ AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
+ R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
+ .build();
+ NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
+ NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
+ NavigationUI.setupWithNavController(binding.navView, navController);
}
+
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java b/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java
index 3c966e0..d36fa48 100644
--- a/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java
+++ b/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java
@@ -25,7 +25,7 @@
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
- Button button_register = (Button) findViewById(R.id.Registerbutton);
+ Button button_register = (Button) findViewById(R.id.Newregistationbutton);
button_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -33,5 +33,13 @@
startActivity(intent);
}
});
+ button_register = (Button) findViewById(R.id.Loginbutton);
+ button_register.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(LaunchActivity.this,LoginActivity.class);
+ startActivity(intent);
+ }
+ });
}
}
diff --git a/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java b/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java
index 16cf924..4ba2800 100644
--- a/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java
+++ b/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java
@@ -1,6 +1,9 @@
package com.example.tampopo_client.views;
+import android.content.Intent;
import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
@@ -22,5 +25,21 @@
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
+ Button button_register = (Button) findViewById(R.id.Registerbutton);
+ button_register.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(RegisterActivity.this,LoginActivity.class);
+ startActivity(intent);
+ }
+ });
+ button_register = (Button) findViewById(R.id.Loginbutton2);
+ button_register.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(RegisterActivity.this,LoginActivity.class);
+ startActivity(intent);
+ }
+ });
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_friend.xml b/app/src/main/res/layout/activity_friend.xml
index 79295c8..6f2939d 100644
--- a/app/src/main/res/layout/activity_friend.xml
+++ b/app/src/main/res/layout/activity_friend.xml
@@ -1,10 +1,86 @@
+ android:paddingTop="?attr/actionBarSize">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_launch.xml b/app/src/main/res/layout/activity_launch.xml
index e11fd8c..7ccbd4b 100644
--- a/app/src/main/res/layout/activity_launch.xml
+++ b/app/src/main/res/layout/activity_launch.xml
@@ -13,7 +13,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="tampopo"
- android:textSize="25dp"
+ android:textSize="45dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
@@ -22,22 +22,24 @@
app:layout_constraintVertical_bias="0.276" />
+ app:layout_constraintVertical_bias="0.692" />
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ app:layout_constraintVertical_bias="0.788" />
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_dashboard.xml b/app/src/main/res/layout/fragment_dashboard.xml
new file mode 100644
index 0000000..166ab0e
--- /dev/null
+++ b/app/src/main/res/layout/fragment_dashboard.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
new file mode 100644
index 0000000..f3d9b08
--- /dev/null
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_notifications.xml b/app/src/main/res/layout/fragment_notifications.xml
new file mode 100644
index 0000000..d417935
--- /dev/null
+++ b/app/src/main/res/layout/fragment_notifications.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml
new file mode 100644
index 0000000..1736064
--- /dev/null
+++ b/app/src/main/res/menu/bottom_nav_menu.xml
@@ -0,0 +1,25 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
new file mode 100644
index 0000000..4a82a18
--- /dev/null
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7ba44f5..965d6a4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,4 +3,9 @@
ホーム画面からフレンド一覧への画面遷移ボタン
ホーム画面から通知一覧への画面遷移ボタン
ホーム画面から設定画面への画面遷移ボタン
+ ホーム
+ ダッシュボード
+ 通知
+ 友達リスト
+
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 7db8943..d340e83 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -12,6 +12,8 @@
retrofit = "3.1.0-SNAPSHOT"
retrofitVersion = "3.0.0"
converterJackson = "3.0.0"
+navigationRuntimeAndroid = "2.9.0"
+navigation = "2.6.0"
[libraries]
junit = { group = "junit", name = "junit", version.ref = "junit" }
@@ -26,6 +28,10 @@
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
retrofit2-retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofitVersion" }
converter-jackson = { group = "com.squareup.retrofit2", name = "converter-jackson", version.ref = "converterJackson" }
+navigation-runtime-android = { group = "androidx.navigation", name = "navigation-runtime-android", version.ref = "navigationRuntimeAndroid" }
+navigation-fragment = { module = "androidx.navigation:navigation-fragment", version.ref = "navigation" }
+navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "navigation" }
+
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }