【问题标题】:include an activity inside a tab result in full screen activity在选项卡中包含活动会导致全屏活动
【发布时间】:2020-02-18 20:04:29
【问题描述】:

当关注 android 选项卡式活动时,选项卡式活动会被活动覆盖。

我是安卓新手。我正在学习在不同的选项卡上包含一些活动。但是,活动会全屏显示并覆盖主选项卡

// TabMain.java 
public class TabMain extends AppCompatActivity {

  .......
}
// SectionsPagerAdapter.java extends FragmentPagerAdapter
@Override
    public Fragment getItem(int position) {
        switch (position){
            case 1:
                FragmentTab1 tab1 = new FragmentTab1();
                return tab1;
                default:
                    return PlaceholderFragment.newInstance(position + 1);
        }
    }
public class FragmentTab1 extends Fragment {

    @Override
    public View onCreateView(
            @NonNull LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.galery_main_layout, container, false);
        Intent intent = new Intent(getActivity(), UploadMain.class);
        getActivity().startActivity(intent);

        return root;
    }
}

UploadMain.java 实现Activity

<application
        android:icon="@drawable/icon"
        android:label="@string/app_name">
        <activity
            android:name=".TabMain"
            android:label="@string/title_activity_tab_main"
            android:theme="@style/AppTheme.NoActionBar">

        </activity>
        <activity
            android:name=".FdActivity"
            android:configChanges="keyboardHidden|orientation"
            android:label="@string/app_name"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".UploadMain"
            android:configChanges="keyboardHidden|orientation"
            >

        </activity>
    </application>

我希望上传主类在 tab2 内

TabMain |表 1(其他活动) |选项卡 2(UploadMain)

【问题讨论】:

  • 最好将 Activity 视为应用程序的单个屏幕(并非总是如此,但它仍然是考虑它们的好方法)。对于屏幕的各个部分(包括“标签”内容),请使用 Fragments 或 Views。
  • TabActivity 已被弃用一段时间 - 最好切换到一个 Activity 和 Fragments,例如参见 this SO post
  • BTW AppCompatActivity 没有扩展 TabActivity 所以它不能按照你想要的方式工作。

标签: java android android-activity tabbed


【解决方案1】:

ViewPager 中不能有 Activity,它必须是片段。

而且,当你像这样启动活动时,startActivity(intent) 它不会替换以前的屏幕或活动,它只会创建一个具有新布局的新活动,使以前的活动暂停(有时也会停止)直到您关闭上一个活动。您需要了解更多关于 activityfragment 生命周期的信息

【讨论】:

    【解决方案2】:

    您的 FragmentTab1 会启动一个新的 Activity,而不是仅替换框架布局内的视图,而是启动一个全新的 Activity。您的代码属于 Fragmenttab1 类和该行 Intent intent = new Intent(getActivity(), UploadMain.class); getActivity().startActivity(intent);

    应该删除

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多