2014-09-28 3 views
1

설명서에서 해당 활동이 매니페스트에서 launchMode = "singleTop"을 설정하면 onNewIntent 콜백을 통해 의도가 표시됩니다.TabHost 내부의 활동 onNewIntent

활동이 TabHost에 의해 시작된 경우이 동작을 수행하지 못했습니다. onNewIntent를 호출하는 대신 활동의 onCreate 메소드가 호출되어 활동 스택 맨 위에 활동의 새 인스턴스가 생성됩니다.

// create the TabHost that will contain the Tabs 
      tabHost = (TabHost)findViewById(android.R.id.tabhost); 


      TabSpec tab1 = tabHost.newTabSpec("First Tab"); 
      TabSpec tab2 = tabHost.newTabSpec("Second Tab"); 
      TabSpec tab3 = tabHost.newTabSpec("Third tab"); 

      // Set the Tab name and Activity 
      // that will be opened when particular Tab will be selected 
      tab1.setIndicator("Tab1"); 
      Intent intent = new Intent(this, WhenLogin.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| 
        Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      tab1.setContent(intent); 

다른 사람이 문제가 있었 :

이 의도를 시작하는 내 코드는? 그렇다면 해결책을 찾았습니까?

+0

"''TabHost'"로 시작한 것은 무엇을 의미합니까? – CommonsWare

+0

나는 탭을 사용하고있다. 탭을 사용하지 않았을 때 모두 정상적으로 작동했습니다. –

+0

아마 당신은 "TabHost'에 의해 시작된"의미 "를 설명하기 위해 소스 코드에 붙여 넣는 것을 고려할 수 있습니다. – CommonsWare

답변

0

TabActivity 및 액티비티를 탭에 배치하는 일반적인 접근 방식은 에 대해 3.5 년으로 사용되지 않습니다. 많은 전문가들이 이전에 개발자들에게 경고했다. 탭 표시기가있는 ViewPager 또는 FragmentTabHost과 같은 현대적인 탭 솔루션을 사용하거나 TabHost 일반 탭을 사용하여 Views을 사용하십시오.

설명서에서 해당 활동이 매니페스트에서 launchMode = "singleTop"을 설정하면 onNewIntent 콜백을 통해 의도가 표시됩니다. (singleTop와 함께 저를 걱정 것을 사용하지만, 및 어쩌면startActivityForResult())에만 활동이다

startActivity()를 통해 시작했다.

onNewIntent를 호출하는 대신 활동의 onCreate 메소드가 호출되어 활동 스택 맨 위에 활동의 새 인스턴스가 생성됩니다.

"활동의 새 인스턴스"는 본격적인 활동으로 사용되지 않기 때문에 활동 스택에 없습니다. 대신 UI가 활동에서 찢어지고 TabActivity에 탭으로 넣어집니다.

+0

알겠습니다. 이해합니다. 하지만 nfc를 사용합니다. 즉, 조각이 아닌 활동을 사용해야합니다. (NFC TAG을 얻으려면 "새로운 의도로"라는 방법이 필요합니다.) 활동에서 탭을 사용하는 방법이 있습니까? 또는 조각 클래스에서 OnNewIntent 메서드를 대체할까요? 감사합니다. –

+0

@ user3421416 : "하지만 nfc를 사용합니다. 즉, 활동이 아닌 조각을 사용해야 함을 의미합니다."- 활동을 사용해야 할뿐만 아니라 실제 활동이되어야합니다. 해당 활동에 탭이 있는지 (예 : 'ViewPager'를 통해) 중요하지는 않지만 실제 활동이어야합니다. – CommonsWare

관련 문제