假设我有两个活动A和B活动A,其中包含一个按钮,当我无意地按下按钮时,我想启动活动B.
答案 0 :(得分:4)
根据官方文件:
intent是要执行的操作的抽象描述。它可以与listen_address
一起用于发布startActivity
,Activity
以将其发送给任何感兴趣的broadcastIntent
组件,BroadcastReceiver
或startService(Intent)
与后台服务沟通。
bindService(Intent, ServiceConnection, int)
提供了一种工具,用于在不同应用程序中的代码之间执行延迟运行时绑定。它最重要的用途是发起活动,它可以被认为是活动之间的粘合剂。它基本上是一个被动数据结构,包含要执行的动作的抽象描述。
因此,您必须使用它来打开没有例外或变通方法的活动,如果这样做,则忽略整个系统架构。
答案 1 :(得分:4)
如果使用Intent
不的原因是您不希望用户重新输入之前的活动
使用
后,您可以使用finish()
完成该活动意图
if(currentUser == null){
startActivity(new Intent(MainActivity.this,StartActivity.class));
finish();
}
因此用户将无法再次回来
如果您想在活动结束时执行一些代码
你可以使用onDestroy()
覆盖方法,有时如果活动被android本身杀死也可以调用它,这样你就可以添加
isFinishing()功能
内部onDestroy()
方法检查应用程序是否通过调用finish()
返回true
或其他任何返回false
的内容关闭,然后您可以轻松指定代码每种情况。
@Override
protected void onDestroy() {
super.onDestroy();
if(isFinishing()){
// Activity is being destroyed by the function `finish()`
// What to do...
}else{
// Activity is being destroyed anonymously without `finish()`
// What to do...
}
}
答案 2 :(得分:3)
如果没有意图,就无法从另一个人那里开始活动。
答案 3 :(得分:2)
将您的活动放入片段中,然后从按钮开始播放片段。
答案 4 :(得分:1)
这些是启动任何活动的可能方法
<强>第一强>
startActivity(new Intent(Activity_A.this, Activity_B.class));
<强>第二强>
Intent intent = new Intent(Activity_A.this, Activity_B.class);
startActivity(intent);
<强>第三强>
Intent intent = new Intent(Activity_A.this, Activity_B.class);
startActivityForResult(intent,code);