2017-08-02 56 views
0

我打電話針對不同導航項目的相同活動取決於需求。我的問題是如何避免基於id的同一導航項的同時點擊。如果我設置標誌剩餘的物品,這是同一活動的呼叫也無法正常工作,請幫助我。如何避免同時點擊導航項目

代碼

if (id == R.id.nav_Issue_Based) { 
try { String fileName = "assessments.pdf"; 
     viewPdfActivity(fileName, "Issue Based"); 
     drawer.closeDrawer(GravityCompat.START); 
} catch (Exception e) { e.printStackTrace(); } } 

另一

private void viewPdfActivity(String fileName, String title) { 
try { 
Bundle bundle = new Bundle(); 
bundle.putSerializable("file_name", fileName); 
b undle.putString("title", title); 
startActivity(context, bundle, DocumentsLoaderActivity.class); 
} 
catch (Exception e) { 
e.printStackTrace(); } 
} 

更多的代碼

private void startActivity(Context context, Bundle b, Class<?> cls) { 
try { 
Intent intent = new Intent(context, cls); 
if (b != null) { 
    intent.putExtras(b); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
} 
context.startActivity(intent); 
} catch (Exception e) { 
    e.printStackTrace(); 
    } 
} 
+1

請把一些代碼在這裏 –

+0

如果(ID == R.id.nav_Issue_Based){ 嘗試{ String fileName =「assess.pdf」; viewPdfActivity(fileName,「Issue Based」); drawer.closeDrawer(GravityCompat.START); (例外e){ e.printStackTrace(); } } –

+0

private void viewPdfActivity(String fileName,String title){ try {Bundle bundle = new Bundle(); bundle.putSerializable(「file_name」,fileName); bundle.putString(「title」,title); startActivity(context,bundle,DocumentsLoaderActivity.class); (例外e){ e.printStackTrace();} } –

回答

0

設置與您導航,單個實例在Manifest爲您的活動:launchMode = 「singleInstance」。它只會打開最後一次點擊。

+0

如果我爲我的活動設置launchmode = singleInstance,我無法點擊其他導航項目來打開相同的活動,原因是我爲4個導航項目使用相同的活動來打開它,但不是相同的項目來加載兩次 –

+0

當你的活動是單一實例並且從不同位置的不同數據啓動時,那麼當你嘗試重新打開onNewIntent()被調用時。所以,你可以在這裏更新你的內容 – Charu

0

嘗試這種使用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Intent intent = new Intent(LoginActivity.this, HomeScreenActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

或這在清單文件中聲明這樣

<activity android:name=".MainActivity" 
     android:launchMode="singleInstance"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

</activity> 

您的活動了解更多信息read docs

+0

膨脹的同一屏幕可見我們的眼睛如果我不想要那我應該做什麼有什麼解決方案? –

+0

沒有得到你,你可以簡單地解釋 –