2013-03-07 47 views
58

Tôi ghét mã đăng bài và hỏi lý do tại sao nó không hoạt động, nhưng tôi đang thua lỗ ngay bây giờ. Tôi đã cố gắng để chạy các lớp sau đây, và tôi nhận được một ngoại lệ trong logcat mà tôi không thể giải thích. Ngay cả một tìm kiếm google mang lại kết quả rất ít. Có lẽ tôi không hiểu hệ sinh thái, nhưng ngoại lệ có rất ít thông tin. Ngoại lệ tôi nhận được bên dưới:

03-06 21:50:43.031: E/AndroidRuntime(1013): FATAL EXCEPTION: main 
03-06 21:50:43.031: E/AndroidRuntime(1013): android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.content.res.Resources.getResourceName(Resources.java:1659) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.support.v4.view.ViewPager.populate(ViewPager.java:1012) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.support.v4.view.ViewPager.populate(ViewPager.java:881) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1366) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.View.measure(View.java:15513) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.View.measure(View.java:15513) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:847) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.View.measure(View.java:15513) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.View.measure(View.java:15513) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.Choreographer.doFrame(Choreographer.java:532) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.os.Handler.handleCallback(Handler.java:725) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.os.Handler.dispatchMessage(Handler.java:92) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.os.Looper.loop(Looper.java:137) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
03-06 21:50:43.031: E/AndroidRuntime(1013):  at dalvik.system.NativeStart.main(Native Method) 
03-06 21:55:44.231: E/Trace(1033): error opening trace file: No such file or directory (2) 

Tôi đã cố gắng di chuyển ViewPager lên nội dung cấp cao nhất (ví dụ: setContent (máy nhắn tin)) nhưng điều đó dường như không hoạt động. Bất kỳ đầu vào được hoan nghênh. Mã bên dưới:

CHỈNH SỬA * Tôi đơn giản hóa ví dụ và tôi vẫn gặp sự cố tương tự.

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class AskQuestionActivity extends FragmentActivity 
{ 
    private static LayoutParams MATCH_PARENT = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     ViewPager pager = new ViewPager(this); 
     pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) 
     { 
      @Override 
      public int getCount() 
      { 
       return 1; 
      } 

      @Override 
      public Fragment getItem(int arg0) 
      { 
       return new BoardFragment(); 
      } 
     }); 

     setContentView(pager); 
    } 

    public static class BoardFragment extends Fragment 
    { 
     @Override 
     public View onCreateView(LayoutInflater inflater, 
            ViewGroup container, 
            Bundle savedInstanceState) 
     { 
      TextView textView = new TextView(getActivity()); 
      textView.setText("Board"); 
      textView.setGravity(Gravity.CENTER); 

      LinearLayout layout = new LinearLayout(getActivity()); 
      layout.setLayoutParams(MATCH_PARENT); 
      layout.addView(textView); 

      return layout; 
     } 
    } 
} 

Mọi trợ giúp đều được hoan nghênh.

+0

Tôi không nghĩ rằng sự cố nằm trong mã bạn đã hiển thị. Bạn có bất kỳ tệp bố cục XML nào bạn đang sử dụng không? – Eric

+0

Không, không phải trong trường hợp này. Trừ khi biểu hiện của tôi sẽ có ích (tôi biết, tôi ** nên ** có thể đặt bố trí của tôi trong XML, nhưng im chỉ chơi xung quanh với một số công cụ). Trong một giây, tôi nghĩ rằng nó có thể là vì tôi đã không cho một người xem của tôi một kích thước bằng cách gọi pager.setLayoutParam (params); nhưng điều đó cũng không làm được. –

+0

Một cái gì đó đang được coi là tài nguyên khi nó được coi là màu. Tuy nhiên, điều tôi thấy là bạn không có bất kỳ tài nguyên nào được tham chiếu trong mã này. (Tôi nghĩ rằng, một nơi nào đó, '0xFFFFFFFF' được sử dụng thay vì' android.R.color.white', hoặc tương tự.) Lý do tôi đề xuất XML là vì dấu vết ngăn xếp không liên kết ngược với mã của bạn; nhưng nó có thể là từ một Fragment auto-inflation hay cái gì đó. – Eric

Trả lời

83

Vì vậy, tôi sẽ đăng những gì tôi nghĩ là giải pháp cho vấn đề của mình. Sau khi thêm một dòng vào mã trên của tôi, hãy cung cấp một ID "ngẫu nhiên" ViewPager; nó quản lý để khắc phục vấn đề của tôi.

Lúc đầu, tôi đã tin rằng việc đặt ID của riêng bạn là thực hành không tốt, nhưng dường như có những cách hợp pháp để thực hiện việc này. Cụ thể là tạo một tệp tin ids.xml và cho phép hệ sinh thái Android tạo ID cho bạn. Tôi khuyên bạn nên kiểm tra các bài đăng SO này để biết thêm thông tin - herehere.

Nếu không, tôi khuyên bạn chỉ nên tạo một tệp XML cho bố cục của bạn và nhận được ViewPager trong Activity (thay vì lập trình nó ngay lập tức), nhưng cuối cùng tất cả phụ thuộc vào những gì bạn đang cố gắng hoàn thành.

+0

Đã khắc phục sự cố cho tôi – znat

+5

Cảm ơn bạn! Tôi không bao giờ đoán rằng ID là lý do! – Exterminator13

+0

Rực rỡ. Giải quyết nó cho tôi, quá. – Scott

22
ViewPager pager = new ViewPager(this); 

cần id thiết lập tài nguyên

pager.setId(0x1000); 
1

Tôi đã có một vấn đề tương tự với các file layout XML dưới thư mục bố trí. Mã được sử dụng để làm việc trong nhật thực nhưng khi dự án được chuyển sang Android Studio, tôi tiếp tục nhận android.content.res.Resources $ NotFoundException.

Để khắc phục sự cố, tôi đã kết thúc đổi tên các tệp XML đã gây ra sự cố và giải quyết được sự cố. Trước đó, tôi đã thử xây dựng lại dự án, thực hiện các sửa đổi đối với tệp XML nhưng không có gì trong số đó hoạt động.

0

Tôi đã gặp lỗi tương tự. Của tôi đã được gây ra bởi lớp Adapter của tôi có thêm một textView mà không có một imageView phù hợp. Tôi đã có 7 TextViews và chỉ có 6 ImageViews. Tôi mất một vài giờ để tìm ra một sai lầm đơn giản.

0

Tôi gặp vấn đề tương tự. Vấn đề là tệp bố cục bị thiếu. Tôi đã đặt bố trí trong thư mục layout-xlarge nhưng không phải là thư mục layout. Vì vậy, máy tính bảng màn hình nhỏ có vấn đề đó. Điều này có thể cung cấp cho một số người một đầu mối.

1

Vấn đề chính xác. Tôi lập trình tạo ra một người xem trong một đoạn. khi mảnh trở lại nền trước nó bị rơi.

Mặc dù, tôi đã tạo id ngẫu nhiên cho máy nhắn tin chế độ xem nhưng nó vẫn gặp sự cố. Cách duy nhất là gán một Id cố định cho nó. Kỳ dị!

+0

Đó là vì Fragments cần thẻ hoặc id. Nếu họ không có nó, họ sử dụng id vùng chứa. Nếu vùng chứa không có id, đoạn bị lỗi – Urizev

+0

Có, cảm ơn bạn. Để tránh những loại vấn đề này, tôi sử dụng một generater id để assgin ID cho mỗi mục được tạo lập trình trong thời gian chạy. – NCHEN

0

Tôi nhận được cùng một ngoại lệ khi tôi đặt bộ chuyển đổi viewPager.setAdapter(adapter);, chỉ trong Android KitKat 4.4. Tôi cố gắng hầu như tất cả các giải pháp nhưng không hoạt động.

Trong trường hợp của tôi, soluation là khi tôi di chuyển .xml tập tin drawable-nodpi để drawable thư mục (mà là một số hình ảnh SVG), và sau đó Build -> Clean Project lỗi biến mất.

Các vấn đề liên quan