Add scene result, update gallery comments for post comment, add isViewCreated in BaseScene
This commit is contained in:
1 parent
875509be68
commit
67e3c8dc60
10 files changed
+161
-20
No files matched your search
@@ -24,7 +24,8 @@ public final class Announcer {
|
||||
Bundle args;
|
||||
TransitionHelper tranHelper;
|
||||
int flag;
|
||||
int requestId;
|
||||
SceneFragment requestFrom;
|
||||
int requestCode;
|
||||
|
||||
public Announcer(Class<?> clazz) {
|
||||
this.clazz = clazz;
|
||||
@@ -45,8 +46,9 @@ public final class Announcer {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Announcer setRequestId(int requestId) {
|
||||
this.requestId = requestId;
|
||||
public Announcer setRequestCode(SceneFragment requestFrom, int requestCode) {
|
||||
this.requestFrom = requestFrom;
|
||||
this.requestCode = requestCode;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -25,9 +25,12 @@ import android.support.v4.app.FragmentActivity;
|
||||
import android.view.View;
|
||||
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.yorozuya.IntList;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SceneFragment extends Fragment {
|
||||
|
||||
@@ -40,6 +43,17 @@ public class SceneFragment extends Fragment {
|
||||
|
||||
public static final int FLAG_REMOVE_ALL_THE_OTHER_SCENES = 0x1;
|
||||
|
||||
/** Standard scene result: operation canceled. */
|
||||
public static final int RESULT_CANCELED = 0;
|
||||
/** Standard scene result: operation succeeded. */
|
||||
public static final int RESULT_OK = -1;
|
||||
|
||||
int resultCode = RESULT_CANCELED;
|
||||
Bundle result = null;
|
||||
|
||||
List<String> mRequestSceneTagList = new ArrayList<>(0);
|
||||
IntList mRequestCodeList = new IntList(0);
|
||||
|
||||
@LaunchMode
|
||||
public int getLaunchMode() {
|
||||
return LAUNCH_MODE_STANDARD;
|
||||
@@ -100,4 +114,30 @@ public class SceneFragment extends Fragment {
|
||||
view.setTag(R.id.fragment_tag, getTag());
|
||||
view.setBackgroundColor(getContext().getResources().getColor(R.color.background_light));
|
||||
}
|
||||
|
||||
void addRequest(String requestSceneTag, int requestCode) {
|
||||
mRequestSceneTagList.add(requestSceneTag);
|
||||
mRequestCodeList.add(requestCode);
|
||||
}
|
||||
|
||||
void returnResult(StageActivity stage) {
|
||||
for (int i = 0, size = Math.min(mRequestSceneTagList.size(), mRequestCodeList.size()); i < size; i++) {
|
||||
String tag = mRequestSceneTagList.get(i);
|
||||
int code = mRequestCodeList.get(i);
|
||||
SceneFragment scene = stage.findSceneByTag(tag);
|
||||
if (scene != null) {
|
||||
scene.onSceneResult(code, resultCode, result);
|
||||
}
|
||||
}
|
||||
mRequestSceneTagList.clear();
|
||||
mRequestCodeList.clear();
|
||||
}
|
||||
|
||||
protected void onSceneResult(int requestCode, int resultCode, Bundle data) {
|
||||
}
|
||||
|
||||
public void setResult(int resultCode, Bundle result) {
|
||||
this.resultCode = resultCode;
|
||||
this.result = result;
|
||||
}
|
||||
}
|
||||
@@ -147,6 +147,10 @@ public abstract class StageActivity extends AppCompatActivity {
|
||||
currentScene.onNewArguments(args);
|
||||
}
|
||||
if (!removeAllTheOthers) {
|
||||
// Check request
|
||||
if (announcer.requestFrom != null) {
|
||||
currentScene.addRequest(announcer.requestFrom.getTag(), announcer.requestCode);
|
||||
}
|
||||
// Done!
|
||||
return;
|
||||
}
|
||||
@@ -221,6 +225,11 @@ public abstract class StageActivity extends AppCompatActivity {
|
||||
}
|
||||
transaction.commit();
|
||||
|
||||
// Check request
|
||||
if (newScene != null && announcer.requestFrom != null) {
|
||||
newScene.addRequest(announcer.requestFrom.getTag(), announcer.requestCode);
|
||||
}
|
||||
|
||||
// Update SoftInputMode
|
||||
if (newScene != null) {
|
||||
getWindow().setSoftInputMode(newScene.getSoftInputMode());
|
||||
@@ -305,9 +314,14 @@ public abstract class StageActivity extends AppCompatActivity {
|
||||
// Remove tag
|
||||
mSceneTagList.remove(index);
|
||||
|
||||
// Return result
|
||||
if (scene instanceof SceneFragment) {
|
||||
((SceneFragment) scene).returnResult(this);
|
||||
}
|
||||
|
||||
// Update SoftInputMode
|
||||
if (next instanceof SceneFragment) {
|
||||
getWindow().setSoftInputMode(((SceneFragment) scene).getSoftInputMode());
|
||||
getWindow().setSoftInputMode(((SceneFragment) next).getSoftInputMode());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user