java.lang.R.78Exception: Không thể khởi tạo hoạt động ElementInfo


151

Tôi đã cố chạy mã mẫu Trong khi khởi chạy ứng dụng trong trình giả lập Android 1.5, tôi đã gặp những lỗi này .... Có ai có một số gợi ý ..?

LRI từ LogCat:

01-13 02:28:08.392: ERROR/AndroidRuntime(2888): FATAL EXCEPTION: main
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.s.android.test/com.s.android.test.MainActivity}: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.os.Looper.loop(Looper.java:123)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.main(ActivityThread.java:3647)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.reflect.Method.invokeNative(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.reflect.Method.invoke(Method.java:507)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at dalvik.system.NativeStart.main(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): Caused by: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888):     ... 11 more
01-13 02:28:08.407: WARN/ActivityManager(112):   Force finishing activity com.s.android.test/.MainActivity

Chỉnh sửa Lỗi này xảy ra với hầu hết những người mới bắt đầu, điều đáng nói là bạn phải thêm tất cả các hoạt động của mình vào tệp Bản kê khai.


cảm ơn Dan Breslau ... Bây giờ có vẻ tốt hơn..làm thế nào để làm điều đó?
rahul

1
Xin lỗi các bạn ... xin lỗi vì đã thắt chặt thời gian của bạn..Tôi chỉ quên thêm lớp mới vào tệp Manifest ..
rahul

1
cập nhật tất cả các công cụ của tôi (người quản lý nhật thực & sdk) đã sửa nó cho tôi, cũng như thêm thư viện hỗ trợ Android vào dự án
Hayden Thring

Tôi có vấn đề này, hãy xem stackoverflow.com/questions/30473270/iêu
DanialAbdi

Câu trả lời:


137

Đó là một vấn đề của ý định của bạn.

Vui lòng thêm của bạn Activitytrong của bạn AndroidManifest.xml.

Khi bạn muốn thực hiện một hoạt động mới, bạn nên đăng ký nó trong của bạn AndroidManifest.xml.


4
Tôi có một lớp học không mở rộng hoạt động, chỉ chứa một số hình thức phổ biến; nhưng tôi vẫn nhận được ngoại lệ này; tại sao?
Manoj Kumar

Trong dự án của tôi, nó nói rằng lớp này không công khai khi nhìn vào android: name trong tệp xml. Khi tôi thêm công khai trước lớp trong hoạt động chính, ứng dụng sẽ chạy mà không gặp vấn đề gì. Kỳ dị.
Codebeat

tôi đã gặp vấn đề này trong một ứng dụng gốc mà tôi đang phát triển .. tôi đã thêm một phương thức khác trong lớp hoạt động và tôi bắt đầu gặp lỗi này .. đối với tôi, việc xây dựng lại + đã giải quyết nó ..
ashishsony

6
Một tùy chọn khác là hoạt động của bạn nằm trong bảng kê khai, nhưng nó được khai báo là abstract(Tôi đã mắc lỗi đó trong quá trình tái cấu trúc và thông báo lỗi không giúp ích nhiều).
Công nghệ

59

Bạn có thể đang cố gắng tìm chế độ xem trước onCreate()đó không chính xác.

public class MainActivity extends Activity {

  ImageView mainImage = (ImageView) findViewById(R.id.imageViewMain); //incorrect

  @Override
  protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  ...
}

2
Wooo, cảm ơn người đàn ông. Bạn là một người cứu rỗi cuộc sống. Nó khá ngớ ngẩn nhưng cảm ơn rất nhiều. Nó đã ám ảnh tôi suốt một tuần nay.
meain

đã làm sai lầm tương tự;)
Sumit Jha

Lỗi tương tự ở đây cũng có. Cảm ơn
Pooja

53

Có một cách khác để có được java.lang.R nbException: Không thể khởi tạo hoạt động ngoại lệ ElementInfo và đó là hoạt động mà bạn đang cố gắng bắt đầu là trừu tượng . Tôi đã phạm sai lầm ngu ngốc này một lần và nó rất dễ bỏ qua.


13
Ngoài ra, Hoạt động phải được công khai (đây là lỗi của tôi).
djjeck

Xin lỗi đã làm phiền bạn hai năm sau đó, nhưng tôi đã tự hỏi tại sao bạn không thể bắt đầu một hoạt động trừu tượng?
BenjaminFranklin

2
@BenjaminFranklin Một lớp trừu tượng có nghĩa là nó chưa hoàn thành, nó thiếu các phần. Tiền tố một lớp với trừu tượng từ khóa có nghĩa là nó không thể được khởi tạo trực tiếp, mà chỉ thông qua kế thừa: và lớp khác thực hiện các tính năng còn thiếu của lớp trừu tượng.
Kit10

Tôi đã kế thừa lớp trừu tượng nhưng vẫn không thể làm việc. Bạn vui lòng giải thích thêm ??
Mohammedsalim Shivani

53

Trong trường hợp của tôi, tôi quên thêm thư viện google maps

<application>
    ....

    <uses-library android:name="com.google.android.maps" />
</application>

Ngoài ra, hãy kiểm tra xem bạn không thiếu dấu chấm trước trước đường dẫn hoạt động

<activity android:name=".activities.MainActivity"/>

2
Cảm ơn bạn, @Maragues !! Đó là cùng một vấn đề! Bạn đã giải quyết vấn đề của tôi. :)
cmcromance

27

Hình ảnh

Nó cũng xảy ra vì vấn đề này. Tôi đã bỏ chọn các lọ cần được xuất sang apk và điều này cũng xảy ra. Vui lòng đánh dấu vào các lọ mà ứng dụng của bạn cần chạy.


Điều quan trọng là phải xem vấn đề này và thử chính xác từng thành phần phụ thuộc. Ví dụ: trên Android Studio (hoặc Intellij IDEA) chọn phạm vi chính xác cho các phụ thuộc (Được cung cấp, Biên dịch, ...). Trong trường hợp của tôi, thay đổi Cung cấp để Biên dịch và hoạt động tốt.
dayanruben

15

Tôi cũng gặp phải vấn đề này, nhưng theo một cách hơi khác. Đây là kịch bản của tôi:

Chi tiết ứng dụng:

  • Sử dụng ActionBarSherlock làm thư viện
  • Sử dụng android-support-v4-r7-googlemaps.jar trong thư viện ActionBarSherlock để tôi có thể sử dụng "đoạn bản đồ" trong dự án chính của mình
  • Đã thêm jar vào đường dẫn xây dựng của dự án chính của tôi
  • Bao gồm các <uses-library android:name="com.google.android.maps" />biểu hiện của cả dự án thư viện và dự án chính của tôi (điều này có thể không cần thiết trong thư viện?)
  • Tệp kê khai trong dự án chính có định nghĩa hoạt động phù hợp và tất cả các thuộc tính phù hợp
  • Tôi đã không có một hoạt động trừu tượng hoặc bất kỳ vấn đề nào khác mà tôi đã thấy trên Stack Overflow liên quan đến vấn đề này.

Tuy nhiên, tôi vẫn gặp phải lỗi được mô tả trong bài viết gốc và không thể làm cho nó biến mất. Tuy nhiên, vấn đề hơi khác nhau ở một khía cạnh:

  • Nó chỉ ảnh hưởng đến cài đặt mới của ứng dụng vào thiết bị của tôi. Bất cứ khi nào ứng dụng được cài đặt lần đầu tiên, tôi sẽ gặp lỗi trước một số "cảnh báo" về: Không thể giải quyết siêu lớp của FragmentActivity
  • Những cảnh báo đó bắt nguồn từ thư viện ActionBarSherlock
  • Các ứng dụng sẽ buộc đóng và sụp đổ.
  • Nếu tôi ngay lập tức xây dựng lại và triển khai lại ứng dụng, nó hoạt động tốt.
  • Lần duy nhất nó bị sập là trên bản cài đặt hoàn toàn mới. Nếu tôi gỡ cài đặt ứng dụng, được xây dựng và triển khai lại từ Eclipse, nó sẽ bị sập. Xây dựng / triển khai lần thứ hai, nó sẽ hoạt động tốt.

Làm thế nào tôi sửa nó:

  • Trong dự án thư viện ActionBarSherlock, tôi đã thêm android-support-v4-r7-googlemaps.jar vào đường dẫn xây dựng
  • Bước này không khắc phục được vấn đề

  • Khi jar được thêm vào đường dẫn xây dựng, tôi đã thay đổi thứ tự trên tab Java Build Path> Order and Export - Tôi đặt JAR thành mục đầu tiên trong danh sách (nó là mục cuối cùng sau các mục / src và / gen ).

  • Sau đó, tôi đã xây dựng lại và triển khai lại ứng dụng cho thiết bị của mình - nó hoạt động như mong đợi trên một bản cài đặt mới. Để chắc chắn, tôi đã gỡ cài đặt lại 2-3 lần và cài đặt lại - vẫn hoạt động như mong đợi.

Đây có thể là một sai lầm hoàn toàn của tân binh, nhưng tôi đã dành khá nhiều thời gian để tìm hiểu các bài đăng và mã của tôi để tìm ra nó, vì vậy hy vọng nó có thể hữu ích cho người khác. Có thể không khắc phục tất cả các tình huống, nhưng trong trường hợp cụ thể này, cuối cùng, đó là giải pháp cho vấn đề của tôi.


Cảm ơn! Điều này làm việc cho tôi khi tôi gặp vấn đề này khi sử dụng ví dụ "adcatalog" của googles admob và nhận được lỗi này. Một lưu ý quan trọng là kiểm tra các hộp kiểm bên cạnh các thư viện. Trong trường hợp của tôi hỗ trợ & lọ admobsdk.
jsmars

14

Điều này có thể không liên quan đến câu hỏi thực tế, nhưng trong trường hợp của tôi, tôi đã cố gắng thực hiện Kotlin và bỏ qua apply plugin: 'kotlin-android' . Đã xảy ra lỗi vì không thể nhận ra MainActivity dưới dạng tệp .kt.

Hy vọng nó sẽ giúp được ai đó.


1
Đồng thời thêm classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSIONvào bản dựng chính.gradle
Rajkiran

11

Lỗi này cũng có thể là dấu hiệu cuối cùng của một lỗi ngớ ngẩn (như khi tôi - ý tôi là, ho, như khi một người bạn của tôi đã cho tôi xem mã của họ một lần) khi họ cố gắng thực thi mã bên ngoài một phương thức như cố gắng làm điều này :

SQLiteDatabase db = openOrCreateDatabase("DB", MODE_PRIVATE, null); //trying to perform function where you can only set up objects, primitives, etc

@Override
public void onCreate(Bundle savedInstanceState) {
....
}

thay vì thế này:

SQLiteDatabase db;

@Override
public void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase("DB", MODE_PRIVATE, null);
....
}

1
Giúp đỡ rất nhiều. Đã khắc phục sự cố của tôi và dẫn tôi tạo ứng dụng Android đầy đủ chức năng đầu tiên của mình
TheUnCola

7

Tôi đã thoát khỏi vấn đề này bằng cách xóa BinGenthư mục khỏi dự án (sẽ tự động quay lại khi dự án sẽ xây dựng) và sau đó làm sạch dự án từ -> Menu -> Project -> sạch.

Cảm ơn.


6

Trong trường hợp của tôi, tôi đã không đặt setContentView(R.layout.main);

Nếu bạn tạo một lớp mới, đừng tạo sương mù để thiết lập onCreate(Bundle savedInstanceState)phương thức này.

Tôi đã làm sai lầm ngu ngốc này nhiều lần.


6

Đơn giản chỉ cần làm sạch dự án làm việc của bạn hoặc khởi động lại nhật thực. Sau đó chạy dự án của bạn. nó sẽ làm việc


Rất nhiều lần điều này đã xảy ra ... Bây giờ nó không thể giải quyết tệp IADL, có lẽ là gốc rễ của vấn đề và nhật thực được biên dịch dựa trên các tệp cũ ... vì vậy hãy nhớ dọn dẹp, khởi động lại và biên dịch trẻ em .. .
Hunter-Orionnoir

6

Đối với tôi, chuỗi gói của tôi trong AndroidManifest.xmlkhông chính xác (được sao chép từ một hướng dẫn). Đảm bảo chuỗi gói trong tệp này giống với nơi hoạt động chính của bạn, vd

 package="com.example.app"

Một cách dễ dàng để làm điều này là mở tệp AndroidManifest.xml trong tab "Bản kê khai" và nhập nó vào hộp văn bản bên cạnh Gói hoặc sử dụng nút Duyệt.

Ngoài ra, chuỗi gói cho hoạt động của tôi là sai, ví dụ:

<activity android:name="com.example.app.MainActivity" android:label="@string/app_name">

Tôi (ngu ngốc) đã nhận được cùng một lỗi tuần sau khi tôi đổi tên tên gói của tôi. Nếu bạn làm điều này, hãy chắc chắn rằng bạn cũng cập nhật các AndroidManifest.xmltập tin.


5

Ok, tôi khá có kinh nghiệm trên iPhone nhưng mới dùng Android. Tôi gặp vấn đề này khi tôi có:

Button infoButton = (Button)findViewById(R.id.InfoButton);

dòng mã trên:

@Override
public void onCreate (Bundle savedInstanceState) {
}

Có thể tôi bị thiếu ngủ: P


2
Tôi cũng bị thiếu ngủ
Oz Mayt

3

Gần đây tôi đã gặp điều này với việc cài đặt lại Eclipse mới. Hóa ra mức độ tuân thủ Trình biên dịch của tôi đã được đặt thành Java 1.7 và yêu cầu dự án 1.6.

Trong Eclipse: Project -> Properties -> Trình biên dịch Java -> Tuân thủ JDK


2

Gặp vấn đề này và khắc phục bằng cách đặt thuộc tính "chế độ khởi chạy" của hoạt động.


2

Một lý do khác của vấn đề này có thể là một thư viện bị thiếu.

Chuyển đến Thuộc tính -> Android và kiểm tra xem bạn có thêm các thư viện chính xác không


1
Đồng thời kiểm tra xem các thư viện được thêm có dấu tích vào chúng trong Thuộc tính dự án -> Đường dẫn xây dựng Java -> Đặt hàng và xuất
Phil

2

Tôi có cùng một vấn đề, nhưng tôi đã khai báo hoạt động của mình trong tệp Bản kê khai, với tên chính xác.

Vấn đề của tôi là tôi đã không phải nhập thư viện của bên thứ ba trong thư mục "libs" và tôi cần tham khảo chúng trong proyect của mình (Nhấp chuột phải, thuộc tính, Đường dẫn xây dựng Java, Thư viện, Thêm Jar ...).


2

Điều này có thể xảy ra nếu lớp hoạt động của bạn nằm trong gói mặc định. Tôi đã sửa nó bằng cách chuyển lớp hoạt động sang gói mới. và thay đổi tệp kê khai

trước

activity android:name=".MainActivity" 

sau

activity android:name="new_package.MainActivity"

Cảm ơn. Điều đó là vậy đó.
Stephane

2

Trong trường hợp của tôi, tôi đã cố gắng khởi tạo các thành phần (UI) ngay cả trước khi onCreateđược gọi cho Hoạt động.

Đảm bảo các thành phần UI của bạn được khởi tạo / liên kết trong onCreatephương thức sausetContentView

NB: Đây là sai lầm đầu tiên của tôi khi học lập trình Android.


2

Đối với tôi nó khác với bất kỳ điều nào ở trên,

Các hoạt động được tuyên bố là trừu tượng, Đó là lý do tại sao đưa ra lỗi. Một khi nó loại bỏ nó hoạt động.

Sớm hơn

     public abstract class SampleActivity extends AppcompatActivity{
     }

Sau khi loại bỏ

     public class SampleActivity extends AppcompatActivity{
     }

1

Điều này xảy ra với tôi khá thường xuyên khi sử dụng NDK. Tôi thấy rằng tôi cần phải thực hiện "Làm sạch" trong Eclipse sau mỗi lần tôi làm ndk-build. Hy vọng nó sẽ giúp được ai :)


1

Lỗi này cũng xảy ra khi bạn sử dụng ActionBarActivitynhưng được gán AppCompatkiểu không .

Để khắc phục điều này, chỉ cần đặt kiểu ứng dụng của bạn thành một Theme.AppCompatkiểu như thế này.:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
</style>

Bom trabalho @Ostkontentitan! funcionou para mim, obrigado.
Emerson Barcellos

1

Nhấp chuột phải vào dự án> property> android> và thử với phiên bản Android khác trước đó tôi đã làm với Android 4.4 sau đó tôi đổi thành Android 4.3 và nó đã hoạt động!


1

Tôi gặp vấn đề tương tự (Không thể khởi tạo Hoạt động):

Lý do đầu tiên:

Tôi đã truy cập

Camera mCamera;
Camera.Parameters params = mCamera.getParameters();

trước

mCamera = Camera.open();

Vì vậy, cách làm đúng là mở camera trước rồi truy cập thông số.

Lý do THỨ HAI: Khai báo hoạt động của bạn trong tệp kê khai

<activity android:name=".activities.MainActivity"/>

Lý do THIRD: Khai báo quyền Camera trong tệp kê khai của bạn.

<uses-feature android:name="android.hardware.Camera"></uses-feature>
<uses-permission android:name="android.permission.CAMERA" />

Hi vọng điêu nay co ich


1

Trong trường hợp của tôi, tôi đã cố gắng nhúng SDK Facebook và tôi đã có ID ứng dụng sai ; do đó, lỗi đã xuất hiện. Trong tệp kê khai của bạn, bạn nên có dữ liệu meta phù hợp:

<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />

1

Nếu bạn đã cài đặt Android Studio 2.3.3 và Android Studio 3.0.0, thì việc chuyển đổi giữa hai chương trình để phát triển sẽ gây ra lỗi này. Điều này là do tồn tại các tình huống trong đó các lớp được hỗ trợ trong một chương trình không được hỗ trợ bởi chương trình kia và ngược lại. Điều quan trọng là duy trì tính nhất quán trong đó phiên bản Android Studio đang được sử dụng để phát triển dự án.


1

Như được đề xuất bởi djjecktrong nhận xét trong câu trả lời này, tôi đã bỏ lỡ để đặtpublic sửa đổi cho lớp học của mình.

Nó nên

public class MyActivity extends AppCompatActivity {

Nó có thể giúp một số người như tôi.


1

Tôi đã thử tất cả các giải pháp trên nhưng không có gì làm việc cho tôi. sau khi tôi chỉ cần thêm extendhoạt động thay vì AppCompatActivityvà làm việc tốt.

đã sử dụng

public class MainActivity extends Activity  

thay vì

public class MainActivity extends AppCompatActivity 

tôi không biết vấn đề thực sự là gì


0

Điều này xảy ra với tôi khi tôi cố chạy Activityphiên bản 2.2 đã sử dụng nhập từ Honeycomb không có sẵn trong các phiên bản Android cũ hơn và cũng không được bao gồm trong gói hỗ trợ v4.


0

Hoạt động mới của bạn thêm AndroidManifest.xmlnhư".NewActivity"

 </activity>        
    <activity android:name=".NewActivity" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.