2017-02-13 7 views
-2

これは質問Android Resource not found exceptionと重複していません。文字列を整数に変換する際に、Androidリソースが見つかりませんでした

私はアプリでリサイクラービューを持っています。私はカードビューに2つのボタンを持っています。ボタンをクリックすると、各カードに関連付けられた固有のIDが取得され、それをさらに処理するためにフラグメントに渡します。

if(v.getId() == butAccept.getId()){ 

       String x = String.valueOf(dataSet.get(getAdapterPosition()).getMeetId()); 
       Toast.makeText(v.getContext(),x,Toast.LENGTH_SHORT).show(); 
       myFrag.showToast(x); 
      } 

このコードは、カードに関連付けられた一意のIDを実行

Toastに正しく表示され、次のように私のリサイクルビュー上

onClickです。 showToast()が実行されると

public void showToast(String x){ 
     Integer MeetId = Integer.parseInt(x); 
     Toast.makeText(getActivity().getApplicationContext(),MeetId,Toast.LENGTH_SHORT).show(); 

    } 

私はandroid.content.res.Resources$NotFoundException: String resource ID #0x1エラーを取得しています。私はToastユニークなIDを整数にキャストせずに正しい整数を取得しています。私がトースティングの前にIntegerに変換すると、上記のようにエラーが発生します。 getMeetId()関数がIntegerを返すと確信しています。

この問題の原因は何ですか?これをどうすれば解決できますか?

+0

「android.content.res.Resources $ NotFoundException:StringリソースID#0x1」が何回か推測されました... – Selvin

答えて

1

makeText(..)メソッドは、メソッドで指定された整数IDを使用してリソースディレクトリからStringを探しています。

Toast.makeText(getActivity().getApplicationContext(), MeetId ,Toast.LENGTH_SHORT).show(); 

で:

Toast.makeText(getActivity().getApplicationContext(), "" + MeetId ,Toast.LENGTH_SHORT).show(); 

これが起こるだろう、なぜあなたが見ることができるDocumentationを見ることによって、以下を置き換え、これを解決するために

。あなたがこの方法makeTextを見れば、あなたはあなたが第二として取るToast.makeText(context, resId, duration);メソッドを、呼び出していることがわかります

public static Toast makeText(Context context, CharSequence text, @Duration int duration) { 
    // ... 
} 
0

文字列を使用して
public static Toast makeText(Context context, @StringRes int resId, @Duration int duration) 
          throws Resources.NotFoundException { 
    return makeText(context, context.getResources().getText(resId), duration); 
} 

:リソースIDを使用して

引数a StringリソースID。 Integerで呼び出すと、システムはstrings.xmlファイル内のそのIDを持つ文字列リソースを探します。だから、整数に文字列を解析しませんが、ちょうどあなたのToastに代わりにあなたのStringを示しています。

public void showToast(String x){ 
    Toast.makeText(getActivity().getApplicationContext(), x, Toast.LENGTH_SHORT).show(); 
} 
0

トーストのために必要な引数は次のとおりです。

Toast(context, String, Length(integer))

だからあなたは変換されません。文字列をIntegerに変換します。それをトーストに直接表示します。

Toast.makeText(getActivity().getApplicationContext(),x,Toast.LENGTH_SHORT).show(); 
関連する問題