2011-12-07 155 views
0

我在写一个项目来阅读pdf文件。我的主类使用此代码来调用ReaderActivity类:如何在没有按“返回”按钮的情况下退回

Intent it = new Intent(this, ReaderActivity.class); 
startActivity(it); 

而且ReaderActivity类就像下面阅读PDF文件:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    String mimetype = "application/pdf"; 
    File file = new File(filepath); 
    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setDataAndType(Uri.fromFile(file), mimetype); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
} 

当我成功打开PDF,我按下“回“按钮和视图是黑色的。当我再次按“返回”时,它将返回到主类视图。当pdf打开时,我想按一下“返回”按钮并返回到主类视图。我怎样才能做到这一点?

+0

onPause()出于某些原因,它有分裂两班。 – brian

回答

3

要调用ReaderActivity从此您所呼叫intent to View PDF ..

现在,当您按下从PDF,反读取..你来回读者活动,你没有任何的布局设置成你看到黑屏..

第一件事 你应该直接从您的主要活动调用视图意图

但无论如何,你创建EXTRA活动做这个..所以你将不得不删除该ReaderActivity尽快它被使用,所以你可以这样做2种方式..

1)

Intent it = new Intent(this, ReaderActivity.class); 
it.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
startActivity(it); 

或者2)

在ReaderActivity 写this.finish();

+0

解决方案1让我的问题得到解决。 – brian

1

是的,亲爱的,实际上发生了什么事情,你正在从你的主类开始活动来打开pdf,并且你的Reader类将再次开始阅读pdf的活动。这就是为什么你面临这样的问题。

为了解决这个问题,不要打开你的主要类的读者活动。尝试从您的主类打开pdf。因为阅读PDF Intent被调用,并且我们使用了ACTION_VIEW,所以它本身就是Activity。

或者另一种选择是完成你的活动,并呼吁BackPressed()事件的主类。或者你也可以将Flag设置为Intent。 like,intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

我希望使用这个问题将得到解决。

+0

我设置了intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); – brian

+0

但它仍然要按两次 – brian

1

您只需在阅读器类中添加一个按钮即可。并且在点击按钮的按钮上,您必须简单地完成阅读器活动,按照堆栈机制,如果先前的活动未手动关闭,它将自动转到上一个活动。

this.finish ///in reader class on button click 
3

不保存历史堆栈中的readActivity。

使用

Intent it = new Intent(this, ReaderActivity.class); 

it.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
1

空白屏幕来了,因为你没有设定任何ReaderActivity.So内容视图尝试完成ReaderActivity在onRestart()这样的

this.finish(); 

现在你的时候按回按钮它会直接带你到主要活动。希望这可以帮助你。

相关问题