Skip to content

Commit 0332ee5

Browse files
committed
see 01/31 log
1 parent 4322bf7 commit 0332ee5

File tree

11 files changed

+72
-53
lines changed

11 files changed

+72
-53
lines changed

lib/base/src/main/res/layout/activity_back.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
</android.support.design.widget.AppBarLayout>
2222

2323
<android.support.v4.widget.NestedScrollView
24+
android:id="@+id/baseBackNsv"
2425
android:layout_width="match_parent"
2526
android:layout_height="match_parent"
2627
app:layout_behavior="@string/appbar_scrolling_view_behavior">

utilcode/lib/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
public final class AdaptScreenUtils {
1111

1212
private static boolean isInitMiui = false;
13-
private static Field mTmpMetrics;
13+
private static Field mTmpMetricsField;
1414

1515
/**
1616
* Adapt for the horizontal screen, and call it in [android.app.Activity.getResources].
@@ -81,19 +81,20 @@ private static DisplayMetrics getMiuiTmpMetrics(Resources resources) {
8181
String simpleName = resources.getClass().getSimpleName();
8282
if ("MiuiResources".equals(simpleName) || "XResources".equals(simpleName)) {
8383
try {
84-
mTmpMetrics = Resources.class.getDeclaredField("mTmpMetrics");
85-
mTmpMetrics.setAccessible(true);
86-
ret = (DisplayMetrics) mTmpMetrics.get(resources);
84+
//noinspection JavaReflectionMemberAccess
85+
mTmpMetricsField = Resources.class.getDeclaredField("mTmpMetrics");
86+
mTmpMetricsField.setAccessible(true);
87+
ret = (DisplayMetrics) mTmpMetricsField.get(resources);
8788
} catch (Exception e) {
8889
Log.e("AdaptScreenUtils", "no field of mTmpMetrics in resources.");
8990
}
9091
}
9192
isInitMiui = true;
9293
return ret;
9394
}
94-
if (mTmpMetrics == null) return null;
95+
if (mTmpMetricsField == null) return null;
9596
try {
96-
return (DisplayMetrics) mTmpMetrics.get(resources);
97+
return (DisplayMetrics) mTmpMetricsField.get(resources);
9798
} catch (Exception e) {
9899
return null;
99100
}

utilcode/lib/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -269,16 +269,16 @@ public static void fixSoftInputLeaks(final Activity activity) {
269269
String[] leakViews = new String[]{"mLastSrvView", "mCurRootView", "mServedView", "mNextServedView"};
270270
for (String leakView : leakViews) {
271271
try {
272-
Field declaredField = InputMethodManager.class.getDeclaredField(leakView);
273-
if (declaredField == null) continue;
274-
if (!declaredField.isAccessible()) {
275-
declaredField.setAccessible(true);
272+
Field leakViewField = InputMethodManager.class.getDeclaredField(leakView);
273+
if (leakViewField == null) continue;
274+
if (!leakViewField.isAccessible()) {
275+
leakViewField.setAccessible(true);
276276
}
277-
Object obj = declaredField.get(imm);
277+
Object obj = leakViewField.get(imm);
278278
if (!(obj instanceof View)) continue;
279279
View view = (View) obj;
280280
if (view.getRootView() == activity.getWindow().getDecorView().getRootView()) {
281-
declaredField.set(imm, null);
281+
leakViewField.set(imm, null);
282282
}
283283
} catch (Throwable th) {
284284
th.printStackTrace();

utilcode/lib/src/main/java/com/blankj/utilcode/util/RomUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,8 +429,8 @@ private static String getSystemPropertyByReflect(String key) {
429429
try {
430430
@SuppressLint("PrivateApi")
431431
Class<?> clz = Class.forName("android.os.SystemProperties");
432-
Method get = clz.getMethod("get", String.class, String.class);
433-
return (String) get.invoke(clz, key, "");
432+
Method getMethod = clz.getMethod("get", String.class, String.class);
433+
return (String) getMethod.invoke(clz, key, "");
434434
} catch (Exception e) { /**/ }
435435
return "";
436436
}

utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -360,21 +360,18 @@ private static Toast makeNormalToast(Context context, CharSequence text, int dur
360360

361361
static class SystemToast extends AbsToast {
362362

363-
private static Field sField_mTN;
364-
private static Field sField_TN_Handler;
365-
366363
SystemToast(Toast toast) {
367364
super(toast);
368365
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.N_MR1) {
369366
try {
370367
//noinspection JavaReflectionMemberAccess
371-
sField_mTN = Toast.class.getDeclaredField("mTN");
372-
sField_mTN.setAccessible(true);
373-
Object mTN = sField_mTN.get(toast);
374-
sField_TN_Handler = sField_mTN.getType().getDeclaredField("mHandler");
375-
sField_TN_Handler.setAccessible(true);
376-
Handler tnHandler = (Handler) sField_TN_Handler.get(mTN);
377-
sField_TN_Handler.set(mTN, new SafeHandler(tnHandler));
368+
Field mTNField = Toast.class.getDeclaredField("mTN");
369+
mTNField.setAccessible(true);
370+
Object mTN = mTNField.get(toast);
371+
Field mTNmHandlerField = mTNField.getType().getDeclaredField("mHandler");
372+
mTNmHandlerField.setAccessible(true);
373+
Handler tnHandler = (Handler) mTNmHandlerField.get(mTN);
374+
mTNmHandlerField.set(mTN, new SafeHandler(tnHandler));
378375
} catch (Exception ignored) { /**/ }
379376
}
380377
}

utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -306,10 +306,10 @@ private Activity getTopActivityByReflect() {
306306
try {
307307
@SuppressLint("PrivateApi")
308308
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
309-
Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
310-
Field activitiesField = activityThreadClass.getDeclaredField("mActivityList");
311-
activitiesField.setAccessible(true);
312-
Map activities = (Map) activitiesField.get(activityThread);
309+
Object currentActivityThreadMethod = activityThreadClass.getMethod("currentActivityThread").invoke(null);
310+
Field mActivityListField = activityThreadClass.getDeclaredField("mActivityList");
311+
mActivityListField.setAccessible(true);
312+
Map activities = (Map) mActivityListField.get(currentActivityThreadMethod);
313313
if (activities == null) return null;
314314
for (Object activityRecord : activities.values()) {
315315
Class activityRecordClass = activityRecord.getClass();
@@ -343,16 +343,16 @@ private static void fixSoftInputLeaks(final Activity activity) {
343343
String[] leakViews = new String[]{"mLastSrvView", "mCurRootView", "mServedView", "mNextServedView"};
344344
for (String leakView : leakViews) {
345345
try {
346-
Field declaredField = InputMethodManager.class.getDeclaredField(leakView);
347-
if (declaredField == null) continue;
348-
if (!declaredField.isAccessible()) {
349-
declaredField.setAccessible(true);
346+
Field leakViewField = InputMethodManager.class.getDeclaredField(leakView);
347+
if (leakViewField == null) continue;
348+
if (!leakViewField.isAccessible()) {
349+
leakViewField.setAccessible(true);
350350
}
351-
Object obj = declaredField.get(imm);
351+
Object obj = leakViewField.get(imm);
352352
if (!(obj instanceof View)) continue;
353353
View view = (View) obj;
354354
if (view.getRootView() == activity.getWindow().getDecorView().getRootView()) {
355-
declaredField.set(imm, null);
355+
leakViewField.set(imm, null);
356356
}
357357
} catch (Throwable th) {
358358
th.printStackTrace();

utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ class FragmentActivity : BaseActivity() {
6262
if (savedInstanceState != null) {
6363
curIndex = savedInstanceState.getInt("curIndex")
6464
}
65-
6665
fragmentNav.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
6766

6867
mFragments[0] = RootFragment.newInstance()

utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/RootFragment.kt

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import android.transition.Fade
1313
import android.view.View
1414
import com.blankj.lib.base.BaseFragment
1515
import com.blankj.utilcode.pkg.R
16+
import com.blankj.utilcode.pkg.helper.DialogHelper
1617
import com.blankj.utilcode.util.FragmentUtils
18+
import com.blankj.utilcode.util.SpanUtils
1719
import com.blankj.utilcode.util.ToastUtils
1820
import kotlinx.android.synthetic.main.fragment_root.*
1921
import java.util.*
@@ -65,18 +67,22 @@ class RootFragment : BaseFragment(), FragmentUtils.OnBackClickListener {
6567
}
6668

6769
override fun onWidgetClick(view: View) {
68-
fragmentRootAboutTv.text = ""
6970
when (view.id) {
70-
R.id.fragmentRootShowAboutBtn -> fragmentRootAboutTv.text = ("top: " + FragmentUtils.getSimpleName(FragmentUtils.getTop(fragmentManager!!))
71-
+ "\ntopInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopInStack(fragmentManager!!))
72-
+ "\ntopShow: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShow(fragmentManager!!))
73-
+ "\ntopShowInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShowInStack(fragmentManager!!))
74-
+ "\n---all of fragments---\n"
75-
+ FragmentUtils.getAllFragments(fragmentManager!!).toString()
76-
+ "\n----------------------\n\n"
77-
+ "---stack top---\n"
78-
+ FragmentUtils.getAllFragmentsInStack(fragmentManager!!).toString()
79-
+ "\n---stack bottom---\n\n")
71+
R.id.fragmentRootShowAboutBtn -> DialogHelper.showFragmentDialog(
72+
SpanUtils().appendLine("top: " + FragmentUtils.getSimpleName(FragmentUtils.getTop(fragmentManager!!)))
73+
.appendLine("topInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopInStack(fragmentManager!!)))
74+
.appendLine("topShow: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShow(fragmentManager!!)))
75+
.appendLine("topShowInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShowInStack(fragmentManager!!)))
76+
.appendLine()
77+
.appendLine("---all of fragments---")
78+
.appendLine(FragmentUtils.getAllFragments(fragmentManager!!).toString())
79+
.appendLine("----------------------")
80+
.appendLine()
81+
.appendLine("---stack top---")
82+
.appendLine(FragmentUtils.getAllFragmentsInStack(fragmentManager!!).toString())
83+
.appendLine("---stack bottom---")
84+
.create()
85+
)
8086
R.id.fragmentRootAddBtn -> FragmentUtils.add(fragmentManager!!,
8187
ChildFragment.newInstance(),
8288
R.id.child_fragment_container,

utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.blankj.utilcode.pkg.helper
22

33
import android.support.v7.app.AlertDialog
4+
import android.text.method.ScrollingMovementMethod
45
import android.view.LayoutInflater
56
import android.view.View
7+
import android.widget.Button
68
import android.widget.EditText
9+
import android.widget.TextView
710
import com.blankj.utilcode.pkg.R
811
import com.blankj.utilcode.util.ActivityUtils
912
import com.blankj.utilcode.util.KeyboardUtils
@@ -72,11 +75,22 @@ object DialogHelper {
7275
dialog.show()
7376
}
7477

78+
fun showFragmentDialog(info: CharSequence) {
79+
val topActivity = ActivityUtils.getTopActivity()
80+
if (topActivity == null || topActivity.isFinishing) return
81+
val dialogView = LayoutInflater.from(topActivity).inflate(R.layout.dialog_fragment, null)
82+
val aboutTv = dialogView.findViewById<TextView>(R.id.fragmentDialogAboutTv)
83+
aboutTv.movementMethod = ScrollingMovementMethod.getInstance()
84+
aboutTv.text = info
85+
val dialog = AlertDialog.Builder(topActivity).setView(dialogView).create()
86+
dialog.show()
87+
}
88+
7589
fun showToastDialog() {
7690
val topActivity = ActivityUtils.getTopActivity()
7791
if (topActivity == null || topActivity.isFinishing) return
7892
val dialogView = LayoutInflater.from(topActivity).inflate(R.layout.dialog_toast, null)
79-
dialogView.findViewById<View>(R.id.toastDialogShowShortToastBtn)
93+
dialogView.findViewById<Button>(R.id.toastDialogShowShortToastBtn)
8094
.setOnClickListener { ToastUtils.showShort("Short") }
8195
val dialog = AlertDialog.Builder(topActivity).setView(dialogView).create()
8296
// dialog.setCanceledOnTouchOutside(false)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:id="@+id/fragmentDialogAboutTv"
4+
style="@style/TextStyle"
5+
android:layout_width="match_parent"
6+
android:layout_height="wrap_content"
7+
android:scrollbars="vertical" />

utilcode/pkg/src/main/res/layout/fragment_root.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@
1111
android:gravity="center_horizontal"
1212
android:orientation="vertical">
1313

14-
<TextView
15-
android:id="@+id/fragmentRootAboutTv"
16-
style="@style/TextStyle"
17-
android:layout_width="match_parent"
18-
android:layout_height="wrap_content" />
19-
2014
<FrameLayout
2115
android:id="@+id/child_fragment_container"
2216
android:layout_width="match_parent"

0 commit comments

Comments
 (0)