diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7189923..641a64f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -10,15 +10,20 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.ActivityTest6117_1">
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/yanzitong/activitytest6117/FirstActivity.java b/app/src/main/java/com/yanzitong/activitytest6117/FirstActivity.java
index 5915681..c309812 100644
--- a/app/src/main/java/com/yanzitong/activitytest6117/FirstActivity.java
+++ b/app/src/main/java/com/yanzitong/activitytest6117/FirstActivity.java
@@ -1,16 +1,20 @@
package com.yanzitong.activitytest6117;
+import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
+import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
+import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.PopupMenu;
// 组合键:shift + enter
public class FirstActivity extends AppCompatActivity {
@@ -20,6 +24,9 @@ public class FirstActivity extends AppCompatActivity {
// 全局(成员)变量:m开头
Button mFirstBtn1;
Button mFirstBtn2;
+ LinearLayout mFirstLinearLayout;
+ Button mFirstBtn3;
+ Button mFirstBtn4;
/**
* 事件驱动机制
@@ -33,13 +40,40 @@ public class FirstActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Log.d(TAG, "onCreate: 活动创建成功"); // 组合键2:alter + enter
+
+ mFirstBtn4 = findViewById(R.id.first_btn4);
+ mFirstBtn4.setOnClickListener(v -> {
+ // Activity之间的跳转——显式Intent
+ Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
+ startActivity(intent);
+ });
+
+ mFirstBtn3 = findViewById(R.id.first_btn3);
+ mFirstBtn3.setOnClickListener(v -> {
+ finish();
+ });
+
mFirstBtn1 = findViewById(R.id.first_btn1);
mFirstBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "6117严梓桐单击了按钮", Toast.LENGTH_SHORT).show();
+ PopupMenu popupMenu = new PopupMenu(FirstActivity.this, v); // this, super
+ popupMenu.getMenuInflater().inflate(R.menu.main, popupMenu.getMenu());
+ popupMenu.setOnMenuItemClickListener(item -> {
+ if (item.getItemId() == R.id.add_item) {
+ Toast.makeText(FirstActivity.this, "单击了add按钮", Toast.LENGTH_SHORT).show();
+ } else if (item.getItemId() == R.id.modify_item) {
+ Toast.makeText(FirstActivity.this, "单击了modify按钮", Toast.LENGTH_SHORT).show();
+ } else if (item.getItemId() == R.id.delete_item) {
+ Toast.makeText(FirstActivity.this, "单击了delete按钮", Toast.LENGTH_SHORT).show();
+ }
+ return true;
+ }); // 箭头函数(lambda表达式)——接口[只能有一个抽象函数]
+ popupMenu.show();
}
});
+
mFirstBtn2 = findViewById(R.id.first_btn2);
mFirstBtn2.setOnClickListener(new View.OnClickListener() {
@Override
@@ -48,8 +82,43 @@ public class FirstActivity extends AppCompatActivity {
Toast.makeText(FirstActivity.this, "我是严梓桐", Toast.LENGTH_SHORT).show();
}
});
+
+ mFirstLinearLayout = findViewById(R.id.first_linear_layout);
+ registerForContextMenu(mFirstLinearLayout);
}
+ // 弹出式菜单——触发事件
+
+
+ // 上下文菜单
+ // ctrl + shift + "+ / -": 展开、折叠代码块
+ @Override
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
+ super.onCreateContextMenu(menu, v, menuInfo);
+ menu.setHeaderTitle("上下文菜单");
+ // 参数1:分组号,参数2:item编号,参数3:顺序编号
+ menu.add(1, 1, 1, "保存");
+ menu.add(1, 2, 2, "更改");
+ menu.add(1, 3, 3, "删除");
+ }
+
+ @Override
+ public boolean onContextItemSelected(@NonNull MenuItem item) {
+ if (item.getItemId() == 1) {
+ Toast.makeText(this, "人物简介——特长", Toast.LENGTH_SHORT).show();
+ Log.d(TAG, "onContextItemSelected: 人物简介——特长");
+ } else if (item.getItemId() == 2) {
+ Toast.makeText(this, "人物简介——战斗力", Toast.LENGTH_SHORT).show();
+ Log.d(TAG, "onContextItemSelected: 人物简介——战斗力");
+ } else if (item.getItemId() == 3) {
+ Toast.makeText(this, "人物简介——经典语录", Toast.LENGTH_SHORT).show();
+ Log.d(TAG, "onContextItemSelected: 人物简介——经典语录");
+ }
+
+ return super.onContextItemSelected(item);
+ }
+
+ // 选项菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
@@ -74,6 +143,7 @@ public class FirstActivity extends AppCompatActivity {
/**
* 添加一个按钮,id = first_btn2,完成单击事件:弹出Toast消息日志,内容自定义,带个人标识
+ *
* mFirstBtn2 = findViewById(R.id.first_btn2);
* mFirstBtn2.setOnClickListener(new View.OnClickListener() {
*
diff --git a/app/src/main/java/com/yanzitong/activitytest6117/SecondActivity.java b/app/src/main/java/com/yanzitong/activitytest6117/SecondActivity.java
new file mode 100644
index 0000000..4995867
--- /dev/null
+++ b/app/src/main/java/com/yanzitong/activitytest6117/SecondActivity.java
@@ -0,0 +1,27 @@
+package com.yanzitong.activitytest6117;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Button;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+public class SecondActivity extends AppCompatActivity {
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.second_layout);
+ Button mSecondBtn1 = findViewById(R.id.second_btn1);
+ mSecondBtn1.setOnClickListener(v -> {
+ Intent intent = new Intent(SecondActivity.this, ThirdActivity.class);
+ startActivity(intent);
+ });
+ }
+}
+/**
+ * your turn:
+ * 新建UI: third_layout和Java class: thirdActivity
+ * 按钮text = "跳转到ThirdActivity"
+ * 完成单击事件:实现从 SecondActivity 显式跳转到 ThirdActivity
+ */
\ No newline at end of file
diff --git a/app/src/main/java/com/yanzitong/activitytest6117/ThirdActivity.java b/app/src/main/java/com/yanzitong/activitytest6117/ThirdActivity.java
new file mode 100644
index 0000000..bf80d88
--- /dev/null
+++ b/app/src/main/java/com/yanzitong/activitytest6117/ThirdActivity.java
@@ -0,0 +1,46 @@
+package com.yanzitong.activitytest6117;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Button;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+public class ThirdActivity extends AppCompatActivity {
+
+ private Button mThirdBtn1;
+ private Button mThirdBtn2;
+ private Button mThirdBtn3;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.third_layout);
+
+ mThirdBtn1 = findViewById(R.id.third_btn1);
+ mThirdBtn1.setOnClickListener(v -> { // 项目内部隐式Intent:匹配action和category
+ Intent intent = new Intent("com.yanzitong.activitytest6117.action.YZT_FIRST"); // 为FirstActivity定义对应的action
+ intent.addCategory("com.yanzitong.activitytest6117.category.YZT_FIRST");
+ startActivity(intent);
+ });
+
+ mThirdBtn2 = findViewById(R.id.third_btn2);
+ mThirdBtn3 = findViewById(R.id.third_btn3);
+ mThirdBtn2.setOnClickListener(v -> {
+ Intent intent = new Intent(Intent.ACTION_VIEW); // 等价于"Intent intent = new Intent(android.intent.action.VIEW)"
+ startActivity(intent);
+ });
+ mThirdBtn3.setOnClickListener(v -> {
+ Intent intent = new Intent();
+ startActivity(intent);
+ });
+ }
+
+ // 隐式Intent——项目内部或项目之间的调用
+ // 1. 实现ThirdActivity返回FirstActivity
+ /**
+ * 为FirstActivity定义对应的action和category的值
+ * category可以是默认值,不可缺
+ * category自定义
+ */
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/first_layout.xml b/app/src/main/res/layout/first_layout.xml
index 996b157..da89aca 100644
--- a/app/src/main/res/layout/first_layout.xml
+++ b/app/src/main/res/layout/first_layout.xml
@@ -1,22 +1,37 @@
+
+
+ android:text="显示Toast消息"
+ android:textAllCaps="false" />
+ android:text="我是严梓桐"
+ android:textAllCaps="false" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/second_layout.xml b/app/src/main/res/layout/second_layout.xml
new file mode 100644
index 0000000..2056071
--- /dev/null
+++ b/app/src/main/res/layout/second_layout.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/third_layout.xml b/app/src/main/res/layout/third_layout.xml
new file mode 100644
index 0000000..ce3f90c
--- /dev/null
+++ b/app/src/main/res/layout/third_layout.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index cab3fc6..2c6f4b3 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -13,4 +13,18 @@
- ?attr/colorPrimaryVariant
+
+
\ No newline at end of file