+1 امتیاز
قبل در برنامه نویسی توسط (193 امتیاز)
ویرایش شده قبل توسط

چطور می توان activity یک library را به manifest اپلیکیشن اصلی اضافه کرد؟

پکیج لایبرری :com.lib.activity

پکیج اپلیکیشن :com.app.myApp

من این دستور را به manifest لایبرری همچنین پروژه اصلی اضافه کردم

  <activity
            android:name="com.lib.activity.libActivity" 
            android:label="@string/title_activity_main"
           >
</activity>

ولی نمیتونه پیداش کنه

E/AndroidRuntime(31986): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.app.myAppt/com.lib.activity.libActivity}: java.lang.InstantiationException: can't instantiate class com.lib.activity.libActivity

حالت های مختلف را امتحان کردم مانند اینکه

* activity را فقط در manifest لایبرری اضافه کنم

* activity را فقط در manifest اپلیکیشن اصلی اضافه کنم

و ...

اما نشد

 

public abstract class libActivity extends Activity   {

	 Context context;
	 WebView webView;

	 String Password;
	 String MerchantID;
	 String PaymentPath;
	 
	@SuppressLint("SetJavaScriptEnabled")
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_web_payment);
		webView = (WebView) findViewById(R.id.webView);
		context = this;

		try {
			Bundle extras = getIntent().getExtras();
			if (extras != null) {
				MerchantID = extras.getString(MapperObject.MerchantID);
				Password = extras.getString(MapperObject.Password);
				PaymentPath = extras.getString(MapperObject.PaymentPath);				
			}
		} catch (Exception e) {
		}

		webView.getSettings().setJavaScriptEnabled(true);
		webView.getSettings().setBuiltInZoomControls(true);
		
		webView.loadUrl(PaymentPath);		
	}
}

 


توی لایبرری یک کلاس abstract  به اسم PrepareData  دارم که در متد  public void ShowLibActivity() طبق دستور زیر libActivity   را فراخوانی میکنم


Intent i = new Intent();
i.setClass(context, libActivity.class);
i.putExtra(MapperObject.PaymentPath, path);
i.putExtra(MapperObject.MerchantID, MerchantID);
i.putExtra(MapperObject.Password, Password);							
context.startActivity(i);

در پروژه ی اصلی یک کلاس ساختم که extend شده از کلاس  PrepareData

public class PreparDataClass extends PrepareData {
	Context context;

	public PreparDataClass(final Context context, String merchantID,
			String password,
			OnCompletedListener onCompletedListener) {
		super(context, merchantID, password, onCompletedListener);
 
		ShowLibActivity();
	}

	

}

 

 

قبل توسط (1.1هزار امتیاز)
جواب این سوال این است که اگر شما بدرستی فایل jar مربوط به library را در build.gradle پروژه اضافه کرده باشید، پس از اضافه کردن Activity مورد نظرتون به فایل manifest نباید مشکلی داشته باشید. کلاس libActivity رو هم خودتون نوشتین؟
قبل توسط (193 امتیاز)
بله کلاس libActivity را خودم ساختم در واقع یک اکتیویتی معمولی ست
از انجایی که با اکلیپس کار میکنم build.gradle  ندارم
خود پروژه ی لایبرری را به پروژه ی اصلی add کرده ام اما نمیدونم مشکل کجاست
قبل توسط (1.1هزار امتیاز)
library شما درست اضافه شده چون اگه مشکل dependency داشتید خطای ClassNotFound میگرفتید. اگه بشه سوالتون رو ویرایش کنید و تعریف Activity و نحوه فراخوانیشم بزارید شاید بشه بیشتر کمکتون کرد.
قبل توسط (193 امتیاز)
درست شد !! :))
مشکلش این بود که  libActivity را  abstract   تعریف کرده بودم

ممنون بابت اینکه وقت گذاشتید
قبل توسط (1.1هزار امتیاز)
اگر محبت کنید راه حل مشکل رو در قالب جواب طرح کنید که در آینده شاید مشکل بقیه رو هم حل کنه ممنون می شم.

1 پاسخ

0 امتیاز
قبل توسط (193 امتیاز)
 
بهترین پاسخ
مشکلش این بود که  libActivity را  abstract   تعریف کرده بودم

سوالات مشابه

0 امتیاز
1 پاسخ 842 بازدید
0 امتیاز
2 پاسخ 951 بازدید
...