رفتن به مطلب
  • 0

اجرا شدن اکتیویتی دیگه به جای Main


سیدمحمد

سوال

سلام دوستان. 

میخواستم بدونم میشه اکتیویتی main یا همون اکتیویتی اصلی رو تغییرداد؟

مثلا میخام برنامه با اکتیویتی دیگه ای غیر از اکتیویتی main شروع بشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

2 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام

 

ببینید در بیسیک4اندروید اکتیویتی Main بصورت خودکار با اضافه شدن این intent-filter به مانیفست لانچ میشه:

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

شما اگه بعد از اجرا به پوشه object برید و فایل androidManifest.xml رو باز کنید با notepad میتونید در تگ <activity این تکه کد رو ببینید که کارش همون لانچ کردن اکتیویتی Main بصورت پیشفرض هست.

خب ازاونجایی که بیسیک این اجازه رو به ما نداده تا بتونیم از داخل پروژمون این کد رو عوض کنیم ، یعنی این خاصیت رو از اکتیویتی Main ورداریم و بذاریم روی اکتیویتی دیگمون ، میتونیم این کد رو برای مثال برای اکتیویتی ac2 هم از داخل Manifest خود بیسیک اضافه کنیم:

AddActivityText(ac2,<intent-filter>
			   <action android:name="android.intent.action.MAIN" />
			   <category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>)

که اما متاسفانه بااینکار دوتا اکتیویتی مون میشن لانچر اون برنامه و با نصب شدن برنامه دوتا آیکن اضافه میشه به منوی گوشی که یکیش اکتیویتی Main و دیگری ac2 رو اجرا میکنه.

پس این راهکار خوب نیست.

------------------------------------------------------------------------------------------------------------

 

راه دیگه اینه که شما به فرض یک پروژه دارید که توش فقط اکتیویتی Main هست ، حالا یه اکتیویتی دیگه میسازیم به نام مثلا ac2

وقتی ایجادش کردیم ، برنامه رو یکبار کامپایل میکنیم تا کدهای این اکتیویتی جدید به AndroidManifest اضافه بشه.

حالا به پوشه object پروژمون میریم و فایل AndroidManifest.xml رو با notepad باز میکنیم یک کد به این شکل وجود داره:

	<activity
			android:windowSoftInputMode="stateHidden"
			android:launchMode="singleTop"
			android:name=".main"
			android:label="b4a exmaple"
			android:screenOrientation="portrait">
			<intent-filter>
			   <action android:name="android.intent.action.MAIN" />
			   <category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
			
		</activity>

 که اینجا این تکه کد رو کات میکنیم:

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

و اضافش میکنیم برای اکتیویتی ac2 خودمون که به این صورت میشه:

<activity
			android:windowSoftInputMode="stateHidden"
			android:launchMode="singleTop"
			android:name=".ac2"
			android:label="B4A Example"
			android:screenOrientation="portrait">
		<intent-filter>
			   <action android:name="android.intent.action.MAIN" />
			   <category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>

پس حالا اکتیویتی ac2 ما شد لانچر و اکتیویتی Main که کد لانچر توش بود رو پاک کردیم....

 

حالا برای اینکه برنامه بعد از نصب دکمه (باز کردن) اش دچار مشکل نشه و با کلیک کردنش همون اکتیویتی ای که لانچر هست اجرا بشه ، کدهای مربوط به ac2 رو توی مانیفست میبریم بالای بالا تا اول اون رو بشناسه.

برای مثال ، این کل کدهای مانیفست پروژمون:

<?xml version="1.0" encoding="utf-8"?>
<manifest
	xmlns:android="http://schemas.android.com/apk/res/android"
	package="b4a.example"
	android:versionCode="1"
	android:versionName=""
	android:installLocation="internalOnly">
	
	<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="14"/>
	<supports-screens android:largeScreens="true" 
	    android:normalScreens="true" 
	    android:smallScreens="true" 
	    android:anyDensity="true"/>
	<application
		android:icon="@drawable/icon"
		android:label="B4A Example"
		android:theme="@android:style/Theme.Holo">
		
			<activity
			android:windowSoftInputMode="stateHidden"
			android:launchMode="singleTop"
			android:name=".ac2"
			android:label="B4A Example"
			android:screenOrientation="portrait">
		<intent-filter>
			   <action android:name="android.intent.action.MAIN" />
			   <category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
		
		
		
		<activity
			android:windowSoftInputMode="stateHidden"
			android:launchMode="singleTop"
			android:name=".main"
			android:label="B4A Example"
			android:screenOrientation="portrait">
			
			
		</activity>
		<service android:name=".starter">
		</service>
		<receiver android:name=".starter$starter_BR">
		</receiver>
	
	</application>
</manifest>

اگه دقت بکنید کدهای مربوط به اکتیویتی Main پایین تر از ac2 قرار دارن پس مشکلی پیش نمیاد و حالا دیگه ac2 بجای main اجرا یشه.

فایل رو Save میکنیم ، روش کلیک راست میکنیم و ReadOnly میکنیم.... (حتما باید اینکار انجام بشه)

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

تا به حال تست نکردم

 

به محل ذخیره پروژه برید و توی پوشه Object فایل AndroidManifest.xml باز کنید . 

 

حالا دنبال 

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

بگردید و اونرو Cut کنید . 

 

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

 

حالا کد کات شده رو در زیر هر اکتیوتی که میخوایید اول اون اجرا بشه ، قرار بدید . 

 

همون طور که گغتم این روش رو تا به حال تست نکردم ولی یادم نمیاد کجا خوندمش . 

 

و من الله توفیق

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...