将片段添加到 activity
Adding fragments to activity
首先,我在这里阅读了所有内容。 https://developer.android.com/guide/components/fragments.html
我有一个activity,我想水平分割屏幕并添加2个片段。我知道如何在 XML 上添加片段,但我不想这样做。我想在 Java.
上添加它们
所以问题是 FragmentManager 无法工作,除非我的 activity 扩展了 Fragment。我应该在 activity 上这样做还是应该在其中一个片段上添加片段事务方法?
如果我将 activity 扩展为 Fragment,它是否也会成为一个片段?
如果我将 fragmentmanager 和 fragmenttransaction 放在其中一个片段上,我该如何与 activity 建立连接?
这是 activity,我希望我的片段显示在
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class ConversionActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conversion);
NumpadFragment fragment = new NumpadFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.numpad_layout,fragment);
fragmentTransaction.commit();
}
}
这是其中一个片段
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class NumpadFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_numpad,container,false);
}
}
一些建议:
- 使用
fragmentTransaction.replace
(除非您需要将片段添加到堆栈)
- 作为片段的容器,使用 FrameLayout
- 不要通过 "new" 运算符创建新片段。添加
newInstance()
方法并通过调用该方法创建新的片段实例。此外,实现您的片段与 activity 之间的交互。提示:使用 Android Studio 向导将片段添加到您的项目中。 Android Studio 将生成骨架,其中已包括所有需要的方法
- 你肯定需要使用
getSupportFragmentManager
(因为你的片段是android.support.v4.app.Fragment
)
- DEBUG! - 如果你说 "my app is crashing",那是没用的。 Post 你的 logcat/exception/whatever 显示崩溃原因。
首先,我在这里阅读了所有内容。 https://developer.android.com/guide/components/fragments.html
我有一个activity,我想水平分割屏幕并添加2个片段。我知道如何在 XML 上添加片段,但我不想这样做。我想在 Java.
上添加它们所以问题是 FragmentManager 无法工作,除非我的 activity 扩展了 Fragment。我应该在 activity 上这样做还是应该在其中一个片段上添加片段事务方法?
如果我将 activity 扩展为 Fragment,它是否也会成为一个片段?
如果我将 fragmentmanager 和 fragmenttransaction 放在其中一个片段上,我该如何与 activity 建立连接?
这是 activity,我希望我的片段显示在
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class ConversionActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conversion);
NumpadFragment fragment = new NumpadFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.numpad_layout,fragment);
fragmentTransaction.commit();
}
}
这是其中一个片段
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class NumpadFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_numpad,container,false);
}
}
一些建议:
- 使用
fragmentTransaction.replace
(除非您需要将片段添加到堆栈) - 作为片段的容器,使用 FrameLayout
- 不要通过 "new" 运算符创建新片段。添加
newInstance()
方法并通过调用该方法创建新的片段实例。此外,实现您的片段与 activity 之间的交互。提示:使用 Android Studio 向导将片段添加到您的项目中。 Android Studio 将生成骨架,其中已包括所有需要的方法 - 你肯定需要使用
getSupportFragmentManager
(因为你的片段是android.support.v4.app.Fragment
) - DEBUG! - 如果你说 "my app is crashing",那是没用的。 Post 你的 logcat/exception/whatever 显示崩溃原因。