diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 1a4e8be..7ec1c97 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -50,5 +50,5 @@
androidTestImplementation(libs.espresso.core)
implementation(libs.navigation.fragment)
implementation(libs.navigation.ui)
-
+ implementation(libs.viewpager2)
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e826e0d..0ff4bd5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -34,6 +34,7 @@
+
mText;
+
+ public NotificationsViewModel() {
+ mText = new MutableLiveData<>();
+ mText.setValue("This is notifications 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 4e60537..362994f 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,58 +1,78 @@
package com.example.tampopo_client.views;
-
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
-import android.view.LayoutInflater;
import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.Toast;
-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 androidx.viewpager2.widget.ViewPager2;
import com.example.tampopo_client.R;
-import com.google.android.material.bottomnavigation.BottomNavigationView;
+import com.example.tampopo_client.views.MyFragmentAdapter;
+import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.tabs.TabLayoutMediator;
public class FriendActivity extends AppCompatActivity {
- private ActivityFriendBinding binding;
+
+ private ViewPager2 viewPager;
+ private TabLayout tabLayout;
+ private MyFragmentAdapter adapter;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_friend);
-// 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());
+ viewPager = findViewById(R.id.view_pager);
+ tabLayout = findViewById(R.id.tab_layout);
- Toolbar toolbar = findViewById(R.id.actionbar);
- setSupportActionBar(toolbar);
+ adapter = new MyFragmentAdapter(this);
+ viewPager.setAdapter(adapter);
- 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);
+ new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> {
+ if (position == 0) {
+ tab.setText("フレンド");
+ } else if (position == 1) {
+ tab.setText("保留中");
+ }
+ }).attach();
+
+ //フレンド画面からメイン画面への遷移
+ ImageButton buttonReturn = (ImageButton) findViewById(R.id.buttonReturn);
+ buttonReturn.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ Intent intent = new Intent(FriendActivity.this, MainActivity.class);
+ startActivity(intent);
+ }
+ });
+ ImageButton openDialogButton = findViewById(R.id.buttonAdd);
+ openDialogButton.setOnClickListener(v -> showAddFriendDialog(this));
+
+ }
+ public void showAddFriendDialog(Context context) {
+ Dialog dialog = new Dialog(context);
+ dialog.setContentView(R.layout.dialog_add_friend);
+ dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
+ dialog.getWindow().setDimAmount(0.5f);
+ EditText editFriendId = dialog.findViewById(R.id.edit_friend_id);
+ Button buttonSearch = dialog.findViewById(R.id.button_search);
+ ImageView buttonClose = dialog.findViewById(R.id.button_close);
+
+ buttonClose.setOnClickListener(v -> dialog.dismiss());
+
+ buttonSearch.setOnClickListener(v -> {
+ String id = editFriendId.getText().toString();
+ // TODO: IDを使って検索処理を行う
+ Toast.makeText(context, "検索: " + id, Toast.LENGTH_SHORT).show();
+ });
+
+ dialog.show();
}
-
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java b/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java
new file mode 100644
index 0000000..5786821
--- /dev/null
+++ b/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java
@@ -0,0 +1,30 @@
+package com.example.tampopo_client.views;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+
+public class MyFragmentAdapter extends FragmentStateAdapter {
+
+ public MyFragmentAdapter(@NonNull FragmentActivity fragmentActivity) {
+ super(fragmentActivity);
+ }
+
+ @NonNull
+ @Override
+ public Fragment createFragment(int position) {
+ if (position == 0) {
+ // フラグメント①:申請を受けた
+ return new FriendListFragment();
+ } else {
+ // フラグメント②:友達リスト
+ return new FriendReceivedFragment();
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return 2;
+ }
+}
diff --git a/app/src/main/res/layout/activity_friend.xml b/app/src/main/res/layout/activity_friend.xml
index 880385d..5217891 100644
--- a/app/src/main/res/layout/activity_friend.xml
+++ b/app/src/main/res/layout/activity_friend.xml
@@ -1,86 +1,81 @@
-
+ android:background="#BDE6FA">
-
+
-
-
-
+ app:layout_constraintVertical_bias="0.016" />
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/dialog_add_friend.xml b/app/src/main/res/layout/dialog_add_friend.xml
new file mode 100644
index 0000000..4ea31db
--- /dev/null
+++ b/app/src/main/res/layout/dialog_add_friend.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml
index 1cec7c3..0e93f07 100644
--- a/app/src/main/res/menu/bottom_nav_menu.xml
+++ b/app/src/main/res/menu/bottom_nav_menu.xml
@@ -3,7 +3,7 @@
+ android:title="@string/title_home" />
@@ -15,9 +15,7 @@
-
+
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
deleted file mode 100644
index 5db87e3..0000000
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
\ 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 78d72ce..d2bcbac 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,9 +3,9 @@
ホーム画面からフレンド一覧への画面遷移ボタン
ホーム画面から通知一覧への画面遷移ボタン
ホーム画面から設定画面への画面遷移ボタン
- フレンド
- ダッシュボード
- 保留中
+ フレンド
+ 申請中
+ 保留中
友達リスト
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index e461ba8..e181c51 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,6 +15,7 @@
converterJackson = "3.0.0"
navigationRuntimeAndroid = "2.9.0"
navigation = "2.6.0"
+viewpager2 = "1.0.0"
[libraries]
junit = { group = "junit", name = "junit", version.ref = "junit" }
@@ -33,6 +34,7 @@
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" }
+viewpager2 = { group = "androidx.viewpager2", name = "viewpager2", version.ref = "viewpager2" }
[plugins]