実際には、ある断片から別の断片に移動することは、ある活動から別の活動に進むこととほぼ同じです。余分なコードがいくつかあります。 まず、以下のformat-
public class SomeActivity extends SingleFragmentActivity
{
@Override
protected Fragment createFragment()
{
return SomeFragment.newInstance();
}
}
そしてthis-
public class SomeFragment extends Fragment
{
public static SomeFragment newInstance()
{
return new SomeFragment();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.fragment_some, container, false);
return v;
}
}
のようなあなたの破片であなたの活動を行い、以下のコード -
public abstract class SingleFragmentActivity extends AppCompatActivity
{
protected abstract Fragment createFragment();
@LayoutRes
protected int getLayoutResId()
{
return R.layout.activity_fragment;
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(getLayoutResId());
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragment_container);
if (fragment == null)
{
fragment = createFragment();
fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
}
}
}
を含んでいるでしょうSingleFragmentActivity
という名前の新しいJavaクラスを追加します
この後はすべて、あなたのonCreateView(LayoutInflater, ViewGroup, Bundle)
clasである1つの細かいディテールを除いて、アクティビティのコードと同じコードを持ちますs。これはあなたがそれを書く方法です -
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.fragment_some, container, false);
mTextView = (TextView)v.findViewById(R.id.some_text);
mButton = (Button)v.findViewById(R.id.some_button);
mTextView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
check();
}
});
return v;
}
それはそれです!
[docs](https://developer.android.com/training/basics/fragments/communicating.html)で説明されているように、フラグメント間のすべての通信は、アクティビティ – nnesterov
で実行する必要があります。[2つのフラグメント間の基本通信] (http://stackoverflow.com/questions/13700798/basic-communication-between-two-fragments) –