2017-02-28 1 views
0

3 개의 탭이 연결된 간단한 ActionBar가 있습니다. 탭을 클릭하면 조각이 팽창되고보기가 표시됩니다. 탭중인 클릭 이벤트는 이벤트를 사용하여 시작됩니다. 처음에는 첫 번째 조각이 팽창되지만 다른 조각은 클릭하면 반응하고 팽창합니다.탭을 선택하면 ICommand가 항상 실행되지 않음

내가 해고하는 이벤트를 ICommand으로 변경하면 마지막 조각 만 팽창되고 첫 번째 탭을 클릭하면 마지막 이벤트가 팽창됩니다. 두 번째.

내 코드는 내가 ICommands 및 이벤트의 차이 여기에 근본적인 뭔가 누락하거나 뭔가 다른이

ICommand TabClicked 
    { 
     get 
     { 
      return new RelayCommand(() => 
      { 
       tab.TabSelected += (object sender, ActionBar.TabEventArgs e) => TabOnTabSelected(sender, e); 
      }); 
     } 
    } 

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

     SetContentView(Resource.Layout.Main); 

     ActionBar.NavigationMode = ActionBarNavigationMode.Tabs; 

     fragments.Add(new TODFragment()); 
     fragments.Add(new ConditionsFragment()); 
     fragments.Add(new ResultsFragment()); 

     AddTabToActionBar("Time", Resource.Drawable.crucifix_colour); 
     AddTabToActionBar("Conditions", Resource.Drawable.weather_colour); 
     AddTabToActionBar("Results", Resource.Drawable.tod_colour); 
    } 

    void AddTabToActionBar(string text, int iconResourceId) 
    { 
     tab = ActionBar.NewTab().SetTag(text).SetText(text).SetIcon(iconResourceId); 

     /* uncomment and comment out one of the two below to see the difference in operation */ 

     tab.TabSelected += TabOnTabSelected; 
     //tab.SetCommand<ActionBar.TabEventArgs>("TabSelected", TabClicked); 
     ActionBar.AddTab(tab); 
    } 

    void TabOnTabSelected(object sender, ActionBar.TabEventArgs tabEventArgs) 
    { 
     var tabNo = sender as ActionBar.Tab; 
     var frag = fragments[tabNo.Position]; 
     tabEventArgs.FragmentTransaction.Replace(Resource.Id.frameLayout1, frag); 
    } 

암이다? 내가 Xam.Android 및 MVVMLight

답변

0

을 사용하고

나는 답을 발견했다. 나는이 부분 클래스를 만들 때 나는

EditText myEditText; 
EditText MyEditText = myEditText ?? (view.FindViewById<EditText>(Resources.Id.myEdit); 

이 괜찮습니다 (이 적어도 같은 또는 무언가) UI가 같은 객체를 정의하지만, 그 한 번을 다시 정의되지 않는, 정의 의미한다.

UI가 실제로 변경되지는 않지만, 동작 탭을 누를 때마다 단편이 새로 고쳐집니다. myEditText가 null이 아니므로 ID가 변경되지 않는 것이 문제입니다.

대답은 UI 정의 코드에서 UI가 사라지면 객체를 null로 만들고 null이 사라지는 메소드를 추가하는 것입니다. 모든 것이 작동합니다.

관련 문제