2017-09-20 8 views
0

を、仕事とこのポスト[Do fragments really need an empty constructor?]を参照して作成します。のAndroidは、引数を持つフラグメントがない</p> <p>私は引数を持つフラグメントを作成したい

しかし、私はそれを修正する方法はわかりません。

コード:私はタイトルを取得することはできません、

: "タイトルを取得"

断片

public class TestFragment extends Fragment { 
    private final static String BUNDLE_TITLE = "title"; 
    private RelativeLayout rootView; 
    private String title = ""; 

    public static TestFragment newInstance(String titleName){ 
    Bundle bundle = new Bundle(); 
    bundle.putString(BUNDLE_TITLE,titleName); 
    TestFragment testFragment = new TestFragment(); 
    testFragment.setArguments(bundle); 
    return testFragment; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 
         @Nullable Bundle savedInstanceState) { 
    if (rootView == null) { 
     rootView = (RelativeLayout) inflater.inflate(R.layout.find_mac, container, false); 
    } 
    return rootView; 
    } 

    @Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Bundle data = getArguments(); 
    if(data != null){ 
     this.title = getArguments().getString(BUNDLE_TITLE,""); 
    } 
    } 

    String getTitle() { 
    return title; 
    } 
} 

と活動で、

@Override 
protected void onStart() { 
    super.onStart(); 
    TestFragment testFragment = TestFragment.newInstance("hello"); 
    Log.d("debug","get title:"+testFragment.getTitle()); 
} 

ログのみが表示"こんにちは"という言葉。

TestFragment testFragment = TestFragment.newInstance("hello"); 
Log.d("debug","get title:"+testFragment.getTitle()); 

testFragmentフラグメントがまだ作成完了していない:あなたが呼び出すときので

答えて

3

です。これは非同期プロセスであるためです。

したがって、アクティビティでリスナーを作成して、フラグメントが作成されたことを通知し、その中にタイトルを取得する必要があります。

リスナーを実装するためにCommunicating with Other Fragmentsを読むことができます。

+2

彼はまた、その断片を活動に付ける必要があると思います。さもなければライフサイクルがうまくいかないでしょうか? –

+1

@EmreAktürkあなたが正しいです –

+0

あなたは正しいです。私はそれを逃す... –

関連する問題