如何避免导航项的并发点击

时间:2017-08-02 05:03:20

标签: android

我正在为不同的导航项调用相同的活动取决于要求。我的问题是如何避免基于id的同一导航项的并发点击。如果我设置Flags,那些调用同一活动的剩余项目也无效,请帮帮我。

代码

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(); 
  } 
}

2 个答案:

答案 0 :(得分:0)

将您的活动设置为导航,Manifest中的单个实例为: launchMode =“singleInstance”。它只会在最后一次点击时打开。

答案 1 :(得分: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