Skip to content

Commit ca12458

Browse files
author
guohanlin
committed
fragment里连续调用2次show()方法异常解决
1 parent b789af8 commit ca12458

6 files changed

Lines changed: 117 additions & 15 deletions

File tree

SpringDiaLog/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<category android:name="android.intent.category.LAUNCHER" />
1919
</intent-filter>
2020
</activity>
21+
<activity android:name="com.newland.springdialogTest.SecondActivity"></activity>
2122
</application>
2223

2324
</manifest>

SpringDiaLog/app/src/main/java/com/newland/springdialogTest/MainActivity.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
package com.newland.springdialogTest;
22

3+
import android.content.Intent;
34
import android.os.Bundle;
45
import android.support.v7.app.AppCompatActivity;
56
import android.text.Html;
67
import android.view.LayoutInflater;
78
import android.view.View;
89
import android.widget.Button;
9-
import android.widget.ImageView;
1010
import android.widget.LinearLayout;
1111
import android.widget.TextView;
12-
import android.widget.Toast;
1312

1413
import com.facebook.drawee.view.SimpleDraweeView;
1514
import com.newland.springdialog.SpringDiaLog;
1615

1716
public class MainActivity extends AppCompatActivity {
1817
private Button mButton;
1918
private Button mCustomButton;
19+
private Button mSkipButton;
20+
private SpringDiaLog springDiaLog;
2021

2122
@Override
2223
protected void onCreate(Bundle savedInstanceState) {
@@ -37,6 +38,14 @@ public void onClick(View view) {
3738
showNoticMessage();
3839
}
3940
});
41+
42+
mSkipButton = (Button) findViewById(R.id.skipButton);
43+
mSkipButton.setOnClickListener(new View.OnClickListener() {
44+
@Override
45+
public void onClick(View view) {
46+
skipSecondActivity();
47+
}
48+
});
4049
}
4150

4251

@@ -49,14 +58,18 @@ private void showDialog() {
4958
View view = LayoutInflater.from(this).inflate(R.layout.contentview, null);
5059
SimpleDraweeView imageView = (SimpleDraweeView) view.findViewById(R.id.advterImg);
5160
imageView.setImageURI("http://img.zcool.cn/community/01284e57a199450000018c1bfa91c8.jpg@1280w_1l_2o_100sh.webp");
52-
SpringDiaLog springDiaLog = new SpringDiaLog(this, view);
53-
springDiaLog.setShowCloseButton(true)//是否显示关闭按钮
54-
.setCanceledOnTouchOutside(false)//触碰外围是否可关闭弹窗
55-
.setContentViewWidth(280)//设置内容视图宽度
56-
.setContentViewHeight(400)//设置内容视图高度
57-
.setStartAnimAngle(0)//设置进场角度,0是3点钟方向从右往左,然后逆时针类推
58-
.setUseAnimation(true)//是否使用进场动画
59-
.show();
61+
if (springDiaLog == null) {
62+
springDiaLog = new SpringDiaLog(this, view);
63+
springDiaLog.setShowCloseButton(true)//是否显示关闭按钮
64+
.setCanceledOnTouchOutside(false)//触碰外围是否可关闭弹窗
65+
.setContentViewWidth(280)//设置内容视图宽度
66+
.setContentViewHeight(400)//设置内容视图高度
67+
.setStartAnimAngle(0)//设置进场角度,0是3点钟方向从右往左,然后逆时针类推
68+
.setUseAnimation(true)//是否使用进场动画
69+
.show();
70+
} else {
71+
springDiaLog.show();
72+
}
6073
}
6174

6275
/**
@@ -93,4 +106,13 @@ public void onClick(View view) {
93106
}
94107
});
95108
}
109+
110+
/**
111+
* 注释:跳转第二个页面
112+
* 时间:2019/2/27 0027 16:53
113+
* 作者:郭翰林
114+
*/
115+
private void skipSecondActivity() {
116+
startActivity(new Intent(this, SecondActivity.class));
117+
}
96118
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.newland.springdialogTest;
2+
3+
import android.app.Activity;
4+
import android.os.Bundle;
5+
import android.support.annotation.Nullable;
6+
import android.view.LayoutInflater;
7+
import android.view.View;
8+
import android.widget.Button;
9+
10+
import com.facebook.drawee.view.SimpleDraweeView;
11+
import com.newland.springdialog.SpringDiaLog;
12+
13+
/**
14+
* @author 郭翰林
15+
* @date 2019/2/27 0027 16:49
16+
* 注释:
17+
*/
18+
public class SecondActivity extends Activity {
19+
private Button mButton;
20+
private SpringDiaLog springDiaLog;
21+
22+
@Override
23+
protected void onCreate(@Nullable Bundle savedInstanceState) {
24+
super.onCreate(savedInstanceState);
25+
setContentView(R.layout.activity_sencond);
26+
mButton = (Button) findViewById(R.id.showdialog2);
27+
mButton.setOnClickListener(new View.OnClickListener() {
28+
@Override
29+
public void onClick(View view) {
30+
showDialog();
31+
}
32+
});
33+
}
34+
35+
/**
36+
* 说明 显示广告弹框
37+
* 作者 郭翰林
38+
* 创建时间 2017/2/4 上午9:59
39+
*/
40+
private void showDialog() {
41+
View view = LayoutInflater.from(this).inflate(R.layout.contentview, null);
42+
SimpleDraweeView imageView = (SimpleDraweeView) view.findViewById(R.id.advterImg);
43+
imageView.setImageURI("http://img.zcool.cn/community/01284e57a199450000018c1bfa91c8.jpg@1280w_1l_2o_100sh.webp");
44+
if (springDiaLog == null) {
45+
springDiaLog = new SpringDiaLog(this, view);
46+
springDiaLog.setShowCloseButton(true)//是否显示关闭按钮
47+
.setCanceledOnTouchOutside(false)//触碰外围是否可关闭弹窗
48+
.setContentViewWidth(280)//设置内容视图宽度
49+
.setContentViewHeight(400)//设置内容视图高度
50+
.setStartAnimAngle(0)//设置进场角度,0是3点钟方向从右往左,然后逆时针类推
51+
.setUseAnimation(true)//是否使用进场动画
52+
.show();
53+
} else {
54+
springDiaLog.show();
55+
}
56+
}
57+
}

SpringDiaLog/app/src/main/res/layout/activity_main.xml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,28 @@
22
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools"
44
android:id="@+id/activity_main"
5-
android:orientation="vertical"
65
android:layout_width="match_parent"
76
android:layout_height="match_parent"
87
android:gravity="center_horizontal"
8+
android:orientation="vertical"
99
tools:context="com.newland.springdialogTest.MainActivity">
1010

1111
<Button
1212
android:id="@+id/showdialog"
1313
android:layout_width="wrap_content"
1414
android:layout_height="wrap_content"
15-
android:text="显示广告弹框"
16-
/>
15+
android:text="显示广告弹框" />
1716

1817
<Button
1918
android:id="@+id/showcustomdialog"
2019
android:layout_width="wrap_content"
2120
android:layout_height="wrap_content"
22-
android:text="显示自定义视图弹框"
23-
/>
21+
android:text="显示自定义视图弹框" />
22+
23+
<Button
24+
android:id="@+id/skipButton"
25+
android:layout_width="wrap_content"
26+
android:layout_height="wrap_content"
27+
android:text="跳转第二个页面" />
2428

2529
</LinearLayout>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
4+
android:id="@+id/activity_main"
5+
android:orientation="vertical"
6+
android:layout_width="match_parent"
7+
android:layout_height="match_parent"
8+
android:gravity="center_horizontal"
9+
tools:context="com.newland.springdialogTest.SecondActivity">
10+
11+
<Button
12+
android:id="@+id/showdialog2"
13+
android:layout_width="wrap_content"
14+
android:layout_height="wrap_content"
15+
android:text="显示广告弹框" />
16+
</LinearLayout>

SpringDiaLog/springdialog/src/main/java/com/newland/springdialog/SpringDiaLog.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,10 @@ public void run() {
165165
mContainerView.setLayoutParams(layoutParams);
166166

167167
//加入视图操作
168+
mContentView_FrameLayout.removeAllViews();
168169
mContentView_FrameLayout.addView(mContentView);
169170
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
171+
androidContentView.removeView(mRootView);
170172
androidContentView.addView(mRootView, params);
171173

172174
if (isUseAnimation) {

0 commit comments

Comments
 (0)