私はMainActivity()
とFirstFragment()
です。getActivity()はフラグメントでnullを返しますか?
FirstFragmentにある関数をMainActivity()
から呼び出しています。
問題は、その時ですgetActivity()
はnullを返しますか?
私はMainActivity()
とFirstFragment()
です。getActivity()はフラグメントでnullを返しますか?
FirstFragmentにある関数をMainActivity()
から呼び出しています。
問題は、その時ですgetActivity()
はnullを返しますか?
Activity
の参照をonAttach()
からご利用ください。私は、フラグメントが
public void onViewCreated(View view, Bundle savedInstanceState) {
mcontext=getContext();
mcontextを起動したときにこれを行ってください、私はあなたがcontext
この
if(isNetworkAvailable(getActivity().getContext()))
{
System.out.println("Internet is On.");
}
をActivity
のインスタンスを使用するための最良のpraticeだと思います必要に応じて簡単に活動としてキャストされます。
Android APIレベル23以降、onAttach(アクティビティアクティビティ)は廃止されました。 onAttach(コンテキストコンテキスト)を使用する必要があります。 http://developer.android.com/reference/android/app/Fragment.html#onAttach(android.app.Activity) はそうあなたがONATTACH使用したい場合は、
@Override
public void onAttach(Context context) {
super.onAttach(context);
Activity a;
if (context instanceof Activity){
a=(Activity) context;
}
}
を行う必要があり、あなたが背景とリターンにアプリを移動すると
if(getActivity()==null){
GET活動がnullを返します行いません。 これを使用すると、コードのこの部分が無視され、バグがどこから来たのか理解できなくなることがあります。
のようにしてみてください渡すべきだと思い、これは断片
からpublic class FirstFragment extends Fragment {
private Activity mActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mActivity = (Activity) context;//use this one .. this is MainActivity instance u can use this as MainActivity mMainActivity = (MainActivity)mActivity;
}
}
アクティビティ参照を使用する代わりに。 Contextクラスの参照を作成できます。
private Context context;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof Activity) {//Name of your activity
this.context = (Activity) context;
}
}
// declare a variable activity in your fragment
private Activity activity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof Activity) {
this.activity = (Activity) context;
}
}
@Override
public void onDetach() {
super.onDetach();
this.activity = null;
}
private void initToolbar() {
// then use the var in any function
if (activity == null) {
return;
}
}
プライベートコンテキストmContext。
@Override public void onAttach(コンテキストコンテキスト){ super.onAttach(context); mContext = context; }
......あなたは、このような 'MainActivity' 内の関数を呼び出したい場所で次に
:
((MainActivity)mContext).theFunctionYouWanToCall();
またはその断片が複数の活動に属することができれば、その後、最初のチェック
:IF(MainActivity INSTANCEOF mContext) ((MainActivity)mContext).theFunctionYouWanToCall();
このヘルプが必要です。
あなたのコードを表示してください。 –
いくつかのコードを入力してください – Chandrahasan
あなたはどのようにフラグメントをアクティビティにロードしていますか? – Raghavendra