2016-08-21 2 views
0

У меня есть строки в strings.xml, например:Как я могу получить строку из Recources файла в не активности или фрагмента класса

<string name="movietitleeng_goodfellas">Goodfellas</string> 
    <string name="movietitleeng_casino">Casino</string> 
    <string name="movietitleeng_infiltration">Infiltration</string> 

и теперь я хочу, если я нажму на recyclerView элемент, то показать мне информацию об этом фильме (только для упражнений).

метод onItemClick recyclerView в:

public void onItemClick(View view, int position) { 
        Movie movie = movieArrayList.get(position); 
        Toast.makeText(getContext(), movie.getInfo(), Toast.LENGTH_SHORT).show(); 
       } 

и метод из класса Movie:

public int getTitle() { 
    return title; 
} 
public String getInfo(){ 
    String titleS = getResources().getString(getTitle()); 
    return titleS; 
} 

класс Movie расширяет контекст. Требуется использовать метод getRecources().

и когда я нажимаю один из recyclerView пункта, сбоя приложения с большим количеством заявлений:

08-21 15:25:39.823 18627-18627/com.example.android.mbm I/HwSecImmHelper: mSecurityInputMethodService is null 
08-21 15:25:42.613 18627-18627/com.example.android.mbm E/InputEventReceiver: Exception dispatching input event. 
08-21 15:25:42.613 18627-18627/com.example.android.mbm E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback08-21 15:25:42.616 18627-18627/com.example.android.mbm E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.res.Resources.getString(int)' on a null object reference 
                      at com.example.android.mbm.model.Movie.getInfo(Movie.java:103) 
                      at com.example.android.mbm.fragments.MovieFragment$1.onItemClick(MovieFragment.java:44) 
                      at com.example.android.mbm.fragments.MovieFragment$RecyclerItemClickListener.onInterceptTouchEvent(MovieFragment.java:117) 
                      at android.support.v7.widget.RecyclerView.dispatchOnItemTouch(RecyclerView.java:2261) 
                      at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2389) 
                      at android.view.View.dispatchTouchEvent(View.java:9390) 
                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2549) 
                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2240) 
                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555) 
                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254) 
                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555) 
                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254) 
                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555) 
                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254) 
                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555) 
                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254) 
                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555) 
                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254) 
                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555) 
                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254) 
                      at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555) 
                      at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254) 
                      at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2461) 
                      at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1777) 
                      at android.app.Activity.dispatchTouchEvent(Activity.java:2865) 
                      at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60) 
                      at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2422) 
                      at android.view.View.dispatchPointerEvent(View.java:9610) 
                      at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4436) 
                      at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4302) 
                      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3836) 
                      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3889) 
                      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3855) 
                      at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3981) 
                      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3863) 
                      at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4038) 
                      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3836) 
                      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3889) 
                      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3855) 
                      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3863) 
                      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3836) 
                      at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6135) 
                      at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6109) 
                      at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6070) 
                      at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6251) 
                      at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:192) 
                      at android.os.MessageQueue.nativePollOnce(Native Method) 
                      at android.os.MessageQueue.next(MessageQueue.java:330) 
                      at android.os.Looper.loop(Looper.java:137) 
                      at android.app.ActivityThread.main(ActivityThread.java:5546) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller 
08-21 15:25:42.649 18627-18627/com.example.android.mbm I/Process: Sending signal. PID: 18627 SIG: 9 
+0

и да, я искал ответ в других темах, но он все еще не работает –

ответ

1

Вы должны пройти контекст для Movie.class. Он не может расширить класс контекста.

+0

, когда я делаю новую переменную в классе фрагмента: Контекст context = getContext(); и передать его в конструктор фильма, а затем использовать его в классе Movie: context.getResources(). GetString (заголовок) моя авария приложения в самом начале действия, не щелкая ничего. –

+0

В чем причина? LogCat –

 Смежные вопросы

  • Нет связанных вопросов^_^