在另一个活动中开始活动

时间:2017-03-25 22:27:40

标签: java android android-activity inner-classes

我有一个看起来像这样的课程:

public class GoogleDriveSync extends AppCompatActivity {

     // What Happens When App Is Resumed//
     @Override
     protected void onStart() {

         // Where I Want To Start Inner Class//

         super.onStart();
     }

     private class SyncReminders extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

         @Override
         public void onConnected(@Nullable Bundle bundle) {

         }

         @Override
         public void onConnectionSuspended(int i) {

         }

         @Override
         public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

     }
}

在那个班级里面我有另一个班级。主类最终将有三个私有类。如何使用intent启动内部类。谢谢!

1 个答案:

答案 0 :(得分:1)

它必须是public static(或Activity的{​​{1}}子类,正如您在此处所拥有的那样,而不是AppCompatActivity类。然后,您将通过private启动它,就像启动任何其他活动一样。

但是,目前还不清楚为什么要这样做。从另一项活动的startActivity()开始活动不太可能是您想要的。

让我们一起来看看会发生什么,假设您的奇怪名称onStart()活动是发射器活动:

  • 用户点击您的启动器图标
  • Android会创建GoogleDriveSync
  • 的实例
  • Android在GoogleDriveSync实例
  • 上调用onCreate()
  • Android在GoogleDriveSync上拨打onStart(),您拨打GoogleDriveSync致电startActivity()
  • Android在SyncReminders上调用onStop(),因为它将不再可见(假设GoogleDriveSync是典型的活动,填满了屏幕)
  • Android会创建SyncReminders的实例,通过其生命周期方法并显示它
  • 最终,用户尝试按BACK
  • Android在SyncReminders上拨打onStart(),您拨打GoogleDriveSync致电startActivity()
  • Android在SyncReminders上调用onStop(),因为它将不再可见(假设GoogleDriveSync是典型的活动,填满了屏幕)
  • Android会创建SyncReminders的实例,通过其生命周期方法并显示它
  • 最终,用户尝试按BACK
  • Android在SyncReminders上拨打onStart(),您拨打GoogleDriveSync致电startActivity()

等等。

换句话说,永远不会显示SyncReminders的用户界面,用户会想知道为什么她无法退出GoogleDriveSync

除非在此处使用两项活动明确原因,否则只使用一项活动。