2012-08-30 5 views
1

http://android-developers.blogspot.in/2011/07/custom-class-loading-in-dalvik.html로드 활동이

이 링크는 둘째 덱스에서 클래스의 로딩을 의미한다, 이것은 내가를 추가하려고 , 잘 작동

대신 두 번째 덱스에서 사용할 수있는 간단한 방법을 호출 그 또한 같은 보여주는 -

나는 또한 PathClassLoader를 사용하여 시도 둘째 덱스 활동, 내 MainActivity, 내가 액세스하려고 할 때 나는면 ClassNotFound 오류를 받고 있어요에서 액세스 시도는/내 MainActivity에서 startActivity를()를 사용하여 활동을 시작 오류

MainActivity에서 Second Dex에있는 활동을 액세스 /로드 할 수 있습니까?

여러 Dex 파일에서 활동을 유지하는 것이 적절한 방법은 무엇입니까? 사전에

덕분에

+0

성공적으로 실행하셨습니까? '05-20 17 : 11 : 10.028 : E/AndroidRuntime (32561) : java.lang.RuntimeException : 활동을 인스턴스화 할 수 없습니다. ComponentInfo {com.example.dex/com.example.dex. lib.LibActivity} : java.lang.ClassNotFoundException : 경로 "com.example.dex.lib.LibActivity"클래스를 찾지 못했습니다 : DexPathList [[zip 파일 "/data/app/com.example.dex-1.apk "], nativeLibraryDirectories = [/ data/app-lib/com.example.dex-1,/vendor/lib,/system/lib]] ' – Zennichimaro

답변

0

예 당신은 할 수있다, 당신이 필요로하는 유일한 것은 애플리케이션의 매니페스트 파일에서 활동 세부 사항을 언급하는 것입니다.

또한 활동의 ​​레이아웃 파일이 있는지 확인하십시오.

예 : 내 응용 프로그램의 라이브러리 jar 파일에 TestActivity를로드하려고합니다.

TestActivity.class (JAR 파일에있는) :

public class TestActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(getIntent().getIntExtra("LAYOUT", -1)); 
} 

} 

MainActivity.class (응용 프로그램 프로젝트에있는)

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity); 

    Intent intTest = new Intent(this, TestActivity.class); 
    intTest.putExtra("LAYOUT", R.layout.activity_test); 
    startActivity(intTest); 
} 

} 

레이아웃 : actitivity.xml 및 activity_test.xml 모두에 있어야합니다 응용 프로그램의 레이아웃 폴더.

Manifestfile에서 TestActivity를 언급해야합니다.

<activity android:name="yourPackage.TestActivity"></activity> 
+0

감사합니다. Eldhose, 또한 작업의 레이아웃 파일이 * *그곳에**. ** 당신은 ** 거기 **가 말하는 것을 말해 줄 수 있습니까? –

+0

jar의 액티비티에 대한 레이아웃 XML 파일도 Application 프로젝트 레이아웃 폴더에 있어야 함을 의미합니다. 예를 들어 대답을 수정합니다. –

+0

고맙다 Eldhose, 같은 방법으로 이전에 시도한 TestActivity는 MainActivity에서 직접 참조 할 수 없습니다. 다른 Dex 파일에 있기 때문에 Reflection을 사용하여 TestActivity 참조를 가져와야합니다. 일단 startActivity()가 실행되면 ClassnotFound 오류가 발생합니다. –