Androidフラグメントの内部では、アプリがタブレットで実行されているかどうかについて、次の簡単なチェックがあります(タブレットでは3つのビューが開いています。ビュー2と3は電話では表示されず、最初のビューのみが表示されます)
boolean mDualPane;
View detailsFrame = getActivity().findViewById(R.id.content1);
mDualPane = detailsFrame != null && detailsFrame.getVisibility() == View.VISIBLE;
これはフラグメント自体では正常に機能しますが、多くのフラグメントでまったく同じチェックが必要なため、複数のクラスで頻繁に使用されるメソッドに使用する「MiscMethods」クラスに入れたいと思いました。今、私のクラスの同じタラは次のようになります。
public class MiscMethods{
public static boolean landscapeChecker(){
boolean mDualPane;
View detailsFrame = getActivity().findViewById(R.id.content1);
mDualPane = detailsFrame != null && detailsFrame.getVisibility() == View.VISIBLE;
return mDualPane;
}
}
getActivity (およびその findViewById を削除した場合) は、タイプ MiscMethods に対して未定義です。
今、私はここのようなコンテキストのためのアプリケーションクラスを持っています
public static void ErrorToast(int errorCode) {
String errorString = null;
switch (errorCode) {
case 1:
errorString = App.getContext().getString(R.string.error_tooManyFieldsEmpty);
break;
case 2:
errorString = App.getContext().getString(R.string.error_featureComingSoon);
break;
case 3:
errorString = App.getContext().getString(R.string.error_SwitchBreak);
break;
default:
errorString="Wrong Error Code";
break;
}
Toast errormsg = Toast.makeText(App.getContext(), errorString, Toast.LENGTH_SHORT);
errormsg.setGravity(Gravity.CENTER, 0, 0);
errormsg.show();
}
しかし、この App.getContext() も役に立ちません。
どうすればこれを修正できますか?