2012-11-22 5 views
3

활동을 새로 고침해야합니다. 나는 현재의 활동을 끝내고 현재의 활동을 다시 시작하기 위해 어떤 충고를 내놓았는지에 관해 질문하는 무리가있다. 또는 각 위젯에 다시 가치를 제공하십시오. 전환을 피하기 위해이 코드를 사용했습니다.새로 고침/업데이트 활동

Intent intent = getIntent(); 
overridePendingTransition(0, 0); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
this.finish(); 

overridePendingTransition(0, 0); 
startActivity(intent); 

제 경우에는 4 개의 탭이 있으며, 4 개의 탭을 모두 새로 고침해야합니다.

더 많은 문제가 있습니다. 1) 위의 코드를 사용하면 다른 화면에있는 경우 위에있는 코드가 실행될 때이 화면으로 돌아옵니다.

2) 활동 순서가 방해가됩니다. 나는 각 탭 seperatley 다시 시도하더라도 또한 문제

의 일부가 될 것입니다 선택한 탭을 유지

3), 내 탭 중 하나는 웹보기가 있습니다. 보기가 없다면 webview.loadData()를 호출 할 수 없으므로 새로 고치는 방법은없고 해당 탭에보기가 없기 때문에 호출 할 수 없습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇이 될 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

질문은별로 복잡하지 않지만 원하는 솔루션을 최적화해야합니다. 마지막으로 두 번째 방법, 즉 각 구성 요소 새로 고침을 수행했습니다. 이 접근법은 활동 순서를 방해하는 문제를 극복합니다. 웹보기에서 나는 여전히 webView.loadData(...)을 사용하고 있습니다.

총계로 각 탭을 별도로 처리했습니다. 내 전체 코드를 포함 시키면 서툴러 질 것입니다.하지만 여전히 많은 중요한 기능을 통합하려고합니다.

내 활동 클래스에서 내 활동을 새로 고칠 필요가있을 때이 메서드를 호출했습니다.

private void onRefrash() 
{ 
    refreshCurrentActivity(); 

    int selectedTab = getActionBar().getSelectedNavigationIndex(); 
    switch (selectedTab) 
    { 
    case TAB1: 
     fragment1.update(); 
     break; 
    case TAB2: 
     fragment2.update(); 
     break; 
    case TAB3: 
     fragment3.update(); 
     break; 
    }  
Toast.makeText(this, getString(R.string.msg_case_updates_received), Toast.LENGTH_LONG).show(); 
    }      
} 

각 조각은 초기에 초기화되어 있으며 해당 웹보기를 업데이트 할 각 탭마다 업데이트 메서드가 호출됩니다.

0

사용 사례에 따라 조금씩 다릅니다. 매번 레이아웃을 늘리려면 ContentView()를 다시 설정할 수 있습니다. 목록을 표시하는 중이라면 어댑터를 호출하여 목록을 표시 할 수 있습니다. 당신은 당신의 TabActivity의 모든 조각에 대해 이것을해야합니다.

WebView를 다시로드하려면 loadUrl()으로 다시 전화하면됩니다.

선택한 탭을 기억하려면 store it을 입력하고 TabHost에 현재 탭을 설정해야합니다.

+0

간단하고 정확한. 감사합니다. 시도해 보겠습니다. – Android

+0

좋아요, 어떻게 진행되는지 알려주세요! – alexfernandez