我有一个应用程序min SDK 21,目标25.使用:android.app.DialogFragment
和android.support.v7.app.AppCompatActivity.
初始Activity
是一个启动器,它可以启动3个活动中的1个和DialogFragment
。 DialogFragment
可以依次启动Activity
(这是3个活动之一)。我遇到的问题只是关于正在加载的DialogFragment
和Fragment然后加载一个Application然后返回到Launcher。
当Fragment
立即返回启动器(不加载Activity
)时,这可以正常工作。我可以检测到Fragment
是通过启动器加载的,onBackPress()
可以处理它。
但是,当Fragment
加载另一个Activity
然后onBackPress()
用于返回Fragment
,然后onBackPress()
用于返回启动器,我有一个问题。目前处理此情况的方式是Fragment
使用标记Intent
和FLAG_ACTIVITY_CLEAR_TASK
以及FLAG_ACTIVITY_NEW_TASK
通过FLAG_ACTIVITY_CLEAR_TOP
加载启动器(这似乎是某人类似问题的解决方案)。我已尝试过这些标志的其他变体,也没有这些标志。我还试图在onBackPress()
中使用这种情况DialogFragment
而不使用Intent加载Activity
,并且应用程序终止,我需要它返回启动器。
在这种情况下,使用这些标志,当我返回Launcher时,Launcher会显示然后清除然后重新显示(在另一个onBackPress()
上,然后应用程序正确终止)。问题是Launcher显示两次。我假设首先显示的启动器是加载的原始副本,然后它被新副本替换。我还没有找到一种方法(在这种情况下)加载Launcher的原始副本(如果这实际上是发生了什么)。如上所述,这是DialogFragment
。
如何解决这个问题,以便在这种情况下Launcher Activity不显示两次?
答案 0 :(得分:0)
为什么你不完成片段中的活动才能返回启动器活动?
如果你真的需要使用意图,请尝试Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
答案 1 :(得分:0)
尝试覆盖library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
actionButton("test", label = "test"),
shinyjs::hidden(wellPanel(id = "panelA", "I AM PANEL A")),
wellPanel(id="panelB", "I AM PANEL B")
)
server <- function(input,output){
observeEvent(input$test, {
shinyjs::toggle(id= "panelA")
shinyjs::toggle(id= "panelB")
})
}
shinyApp(ui=ui,server=server)
方法,如下所示:
public static void main(String[] args)
{
String[] words = { "Mary", "had", "a", "little", "lamb",
"it's", "fleece", "was", "white", "as",
"snow" };
Scanner in = new Scanner(System.in);
System.out.print("Word length: ");
int wordLength = in.nextInt();
boolean found = false;
int pos = 0;
while (!found)
{
if (wordLength == words[pos].length())
{
pos++;
}
else
{
found = true;
}
}
if (pos > 0)
{
System.out.println("Found " + words[pos] + " at position " + pos);
}
else
{
System.out.println("No word of length " + wordLength);
}
}
答案 2 :(得分:0)
auth_admin
在if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStackImmediate();
}
else {
super.onBackPressed();
}
方法中使用它。