2015-08-11 1 views
2

Я использую Tabgroupactivity в Xamarin для разработки приложения для дроидов. У меня есть TabGroupActivity с 4 дочерними действиями.OnResume() Не вызывается в дочерней активности при использовании с TabGroupActivity в Xamarin Droid

OnResume() не вызывается ни в одной из дочерних операций.

Может кто-нибудь, пожалуйста, помогите мне с правильным решением, почему это не называется !! или Есть ли ошибка в моем коде?

TabGroupActivity.cs

namespace RB.Droid 
{ 
[Activity (Label = "TabGroupActivity")]   
public class TabGroupActivity : ActivityGroup 
{ 


    private List<string> _idList; 

    protected override void OnCreate (Bundle bundle) 
    { 
     base.OnCreate (bundle); 

     if (_idList == null) 
      _idList = new List<string>(); 



    } 


    public void StartChildActivity (string id, Intent intent) 
    { 
     intent.AddFlags (ActivityFlags.ClearTop); 

     var manager = new LocalActivityManager (this, false); 

     var window = MainTabActivity.localActivityManager.StartActivity (id, intent); 
     if (window != null) { 
      _idList.Add (id); 
      SetContentView (window.DecorView); 
     } 
    } 

    public override void FinishActivityFromChild (Activity child, int requestCode) 
    { 
     var manager = new LocalActivityManager (this, false); 
     var index = _idList.Count - 1; 

     if (index < 1) { 
      Finish(); 
      return; 
     } 

     MainTabActivity.localActivityManager.DestroyActivity (_idList [index], true); 
     _idList.RemoveAt (index); 
     index--; 
     var lastId = _idList [index]; 
     var lastIntent = MainTabActivity.localActivityManager.GetActivity (lastId).Intent; 
     var newWindow = MainTabActivity.localActivityManager.StartActivity (lastId, lastIntent); 
     SetContentView (newWindow.DecorView);  
    } 

    public override bool OnKeyDown (Keycode keyCode, KeyEvent e) 
    { 
     if (keyCode == Keycode.Back) { 
      return true; 
     } 
     return base.OnKeyDown (keyCode, e); 
    } 

    public override bool OnKeyUp (Keycode keyCode, KeyEvent e) 
    { 
     if (keyCode == Keycode.Back) { 
      OnBackPressed(); 
      return true; 
     } 
     return base.OnKeyUp (keyCode, e); 
    } 

    public override void OnBackPressed() 
    { 
     var length = _idList.Count; 
     if (length > 1) { 
      var manager = new LocalActivityManager (this, false); 

      var current = MainTabActivity.localActivityManager.GetActivity (_idList [length - 1]); 
      FinishActivityFromChild (current, 0); 
     } 
    } 


} 
} 

SettingsActivityGroup.cs

namespace RB.Droid 
{ 

[Activity (Label = "SettingsActivityGroup")]    
public class SettingsActivityGroup : TabGroupActivity 
{ 
    protected override void OnCreate (Bundle bundle) 
    { 
     base.OnCreate (bundle); 

     // Create your application here 
     StartChildActivity ("Settings", new Intent (this, typeof(Settings))); 
    } 
} 
} 

Settings.cs

namespace RB.Droid 
{ 

[Activity (Label = "Settings")]   
public class Settings : Activity 
{ 
    protected override void OnCreate (Bundle bundle) 
    { 
     base.OnCreate (bundle); 

     // Create your application here 
     TextView tv = new TextView (this); 
     tv.Text = "Settings"; 
     SetContentView (tv); 
    } 

    protected override void OnResume() 
    { 
     base.OnResume(); 

     Toast.MakeText (this, "ON RESUME NOT CALLED", ToastLength.Long); 
    } 
} 
} 
+0

Пожалуйста, опишите, что вы делаете, когда вы хотите, чтобы метод OnResume быть поднят (информация о методе: http://developer.android.com/reference /android/app/Activity.html#onResume()) – Joehl

+0

@Joehl: Я хочу вызвать метод, когда пользователь должен быть проверен для входа в систему, когда он приходит на экран. Я хочу вызвать метод в onResume(). Он работает в android, но мне плохо, он не работает с xamarin. – Ravitheja

ответ

0

Используйте OnStart метод, чтобы сделать это. Мы используем этот метод для загрузки/обновления некоторых ui-данных при отображении представления.

OnResume: Действие переходит в состояние «Пауза», когда на него происходит другое действие. В этом случае, когда пользователь нажал кнопку назад, вызывается onResume.

Больше информации и хорошее объяснение жизненного цикла деятельности: See this answer

+0

да, но если вы переставляете вкладки, OnStart() не будет вызываться. поэтому мне нужно вызвать этот метод даже при перемещении между вкладками. – Ravitheja