2012-06-16 47 views
1

我的應用程序使用條形碼掃描儀。我想在打開應用程序時啓動掃描器,以便在onCreate方法中使用它。問題是,如果我有這樣的話,當我打開設備時,它會再次調用onCreate並調用另一臺掃描儀。如何在設備方向更改時再次停止調用活動?

另外我有第一個調用掃描儀的活動。它有一個菜單,所以如果用戶按下,它會進入該菜單。如果我在該菜單上轉動屏幕,則會再次轉到條形碼掃描儀。

爲了解決這個問題,我有一個標誌,表明它是否是我第一次打電話給掃描儀,如果不是我不再打電話給它。現在的問題是,如果我離開應用程序並再次進入它不會進入掃描儀,它會進入菜單,因爲我不是第一次打電話給它。

任何想法?當我離開我的主要活動或任何其他解決方案時,是否有辦法改變國旗?我的代碼。

private static boolean first = true; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    integrator = new IntentIntegrator(this); 
    if (first) { 
     first = false; 
     integrator.initiateScan(); 
    } 

} 
+1

檢查:可能有幫助:http://stackoverflow.com/questions/456211/activity-restart-on-rotation-android –

回答

3

在應用程序的manifest.xml,它添加到您的活動,其中該條形碼掃描儀被稱爲

android:configChanges="orientation" 

這樣

<activity 
android:name=".YourActivity" 
android:configChanges="orientation" 
android:label="@string/app_name" /> 

它是什麼,當設備它將「無所事事」,這意味着它不會再次調用該活動(這最終避免了調用創建())

+0

我想,如果他離開的應用程式,例如按下home鍵,這並不解決然後長按主頁按鈕。 –

+1

對不起,我沒有讓你。 「這不能解決」是什麼意思,你可以詳細說明當他點擊主頁按鈕並通過選擇最近使用的應用程序返回到應用程序時會發生什麼?我不知道這個:(我發佈的解決方案對我工作得很好(雖然我沒有測試所有的情況) –

+0

沒關係,我的印象是「onCreate()」在活動簡歷中被調用,我錯了。 –

1

您可以重寫onResume方法並進行任何您想要的更改。

public void onResume(Bundle savedInstanceState) { 
    super.onResume(); 
//reset the flag here as you wish 
} 
相關問題