私は遭遇した奇妙な問題があります:getActivity()メソッド常にはフラグメント内でnullを返します。私はonAttach()とonCreateView()の実行が終了した後にそれを呼び出します。Android getActivity()は常にフラグメント内でnullを返します
FragmentActivity内部この断片寿命()断片のスタックを含み、私はそれに断片を追加する方法である:
(このコードフラグメント活性ののonCreate()(から呼び出されています))
SmartFragment fragment;
fragment = (SmartFragment) Fragment.instantiate(this,
fragmentClassName, params);
mStackOfFragments.add(fragment);
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.add(R.id.tabcontent, fragment);
trans.addToBackStack(null);
trans.commitAllowingStateLoss();
は、私はそれを明確に十分であると思います
編集1:
getActivity()への呼び出し:
protected OnDoneListener nDoneListener = new OnDoneListener() {
@Override
public void OnDone(final int counter, final String name) {
if (getActivity() != null)
((TabActivity) getActivity()).RunOnUiThread(new Runnable() {
... ...
このコールバックは、別のクラスから呼び出されています。
編集2:
class MemoryManager()
{
private OnDoneListener nDoneListener;
public void setOnDoneListener(OnDoneListener onDoneListener)
{
this.onDoneListner = onDoneListener;
}
public void updateUiOnRequestFinish()
{
onDoneListener.onDone();
}
}
MemoryManaget自体がupdateUiOnRequestFinish(の呼び出し)は、異なるコールバックから
編集3:
FragmentManagerログがある:
04-08 18:44:05.950: V/FragmentManager(16280): Commit: BackStackEntry{41f9bd60}
`04-08 18:44:05.950: D/FragmentManager(16280): mName=null mIndex=-1 mCommitted=false
04-08 18:44:05.950: D/FragmentManager(16280): Operations:
04-08 18:44:05.950: D/FragmentManager(16280): Op #0: ADD FragmentMyProfile{41f9bc20 id=0x7f070126}
04-08 18:44:05.950: V/FragmentManager(16280): Setting back stack index 0 to BackStackEntry{41f9bd60}
04-08 18:44:05.950: V/FragmentManager(16280): Run: BackStackEntry{41f9bd60 #0}
04-08 18:44:05.950: V/FragmentManager(16280): Bump nesting in BackStackEntry{41f9bd60 #0} by 1
04-08 18:44:05.950: V/FragmentManager(16280): Bump nesting of FragmentMyProfile{41f9bc20 id=0x7f070126} to 1
04-08 18:44:05.950: V/FragmentManager(16280): add: FragmentMyProfile{41f9bc20 id=0x7f070126}
04-08 18:44:05.950: V/FragmentManager(16280): Allocated fragment index FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
04-08 18:44:05.950: V/FragmentManager(16280): moveto CREATED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
04-08 18:44:05.950: V/FragmentManager(16280): moveto ACTIVITY_CREATED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
04-08 18:44:05.990: V/FragmentManager(16280): moveto STARTED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
04-08 18:44:06.030: V/FragmentManager(16280): moveto RESUMED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
`
そしてそれは私にはうまく見えます。だから、私はこのバグが私がコールバックからgetActivity()を呼び出す方法に関係していると推測しています。あなたは「android.support.v4.appを使用している場合は
フラグメントライフサイクルに慣れていないと奇妙なことです... http://developer.android.com/guide/components/fragments.html#CoordinatingWithActivity ...この段落の前の数行をチェックしてください... Activity ConstructorでActivityにFragmentを追加しましたか? – Selvin
getActivity()行でコードを記述できますか? –
セルヴィン:あなたのコメントから、これは些細な問題であることを示唆しています。まあ、あなたが正しいと思っていますが、おそらくそうではありません。私はこのリンクとその内容を知っていて、まだこの問題を抱えています – Nativ