У меня есть Activity
, на котором размещен Fragment
.
Файл макета Activity
:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment class="com.my.ContentFragment"
android:id="@+id/fragment_content"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
Java-код Activity
:
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
public class ContentActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//data from previous Activity
Bundle data = getIntent().getExtras();
Fragment contentFragment = getSupportFragmentManager()
.findFragmentById(R.id.fragment_content);
// Pass data to fragment
/*java.lang.IllegalStateException: Fragment already active*/
contentFragment.setArguments(data);
}
...
}
Я пытаюсь найти фрагмент в onCreate()
Activity, а затем передать ему какие-то данные. Но когда я contentFragment.setArguments(data);
, я получаю java.lang.IllegalStateException: Fragment already active
.
Затем я также проверил contentFragment.getArguments()
, который равен нулю. Итак, почему я не могу задать аргументы своему фрагменту?
Если таким образом невозможно передать пакет во фрагмент, как я могу передать пакет во фрагмент?