حل کردن مشکل برخورد Collision مربوط به Intent Filter

حل کردن مشکل برخورد Collision مربوط به Intent Filter

بسم الله الرحمن الرحیم

حل

 

بسم الله الرحمن الرحیم

حل کردن مشکل برخورد (Collision) َمربوط به activityها 

فصل دوم-بخش  هفتم

در  بخش قبلی  شما یاد گرفتید که چطور  Elment  با  نام  <intent-filter>  می تواند   چگونگی اجرای  یک activity   توسط activity  دیگر را    تعیین می کند.

چه اتفاقی می افتد اگر یک  activity   دیگری (در همین  برنامه یا  برنامه دیگر) دارا ی نام  Filter  یکسانی  باشد؟

حال به همین برنامه  یک activity  دیگر  به نام activity3 را اضافه می کنیم. و لی نام inent Filter  آن  را با Activty  دوم  یکسان  می گذاریم.

در فایل AndroidManifest.xml  دستورات زیر را قرار  می دهیم.

 

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.MehrdadJavidi.usingintent"
 android:versionCode="1"
 android:versionName="1.0" >
 <uses-sdk
 android:minSdkVersion="14"
 android:targetSdkVersion="14" />
 <application
 android:allowBackup="true"
 android:icon="@drawable/ic_launcher"
 android:label="@string/app_name"
 android:theme="@style/AppTheme" >
 <activity
 android:name=".MainActivity"
 android:label="@string/app_name" >
 <intent-filter>
 <action android:name="android.intent.action.MAIN" />
 <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 </activity>
 <activity
 android:name=".SecondActivity"
 android:label=" Second Activity" >
 <intent-filter>
 <action android:name="com.MehrdadJavidi.SecondActivity" />
 <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>
 </activity>
 <activity
 android:name=".ThirdActivity"
 android:label="Third Activity" >
 <intent-filter>
 <action android:name="com.MehrdadJavidi.SecondActivity" />
 <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>
 </activity>
 </application>
</manifest>

حال اگر دستور زیر را  اجرا  کنیم سیستم عامل  اندروید  پنجره  ی به شما نمایش می دهد و از شما خواسته می شود که یک activity را انتخاب کنید

startActivity(new Intent("com.MehrdadJavidi.SecondActivity"));

 

حل مشکل Collisionدر اندروید

 

و اگر Use by default for this action  را انتخاب کنیم activity  که انتخاب کردیم  دفعه های بعد  برای این برنامه  اجرا می شود. و دیگر این پنجره نمایش داده نمی شود.

برای از بین این پیش فرض ها  شما   باید به  قسمت Settings application مربوط به سیستم عامل اندروید  بروید و  سپس App->Manage Application  بروید. و سپس نام  برنامه را انتخاب کنید و زمانی که جزئیات برنامه نمایش داده شده Clear Default  را انتخا ب می  کنید.

 

مشکل Collisionدر اندروید

 

یاد آوری !!

در   فصل اول- بخش پنجم      بیان  کردیم که  package Name  برنامه   بهتر است  که  معکوس شده  Domain  باشد .  چون  نام  Domain   منحصر به فرد می باشد   دیگر  مشکل   Collision   به  وجود  نمی آید.

 

آموزش برنامه نویسی اندروید

 

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس