如何通过从下拉菜单中选择项目来在活动中添加片段?

时间:2016-03-16 10:15:26

标签: java android

我想只在从下拉菜单中选择项目时添加一个片段,默认情况下,除了下拉菜单外,活动中不应该有片段。我尝试使用.add()函数,但它给了我错误。

我有2个名为SAR.java和Pagdi.java的片段,下拉列表有3个条目:select-following,sar,pagdi。

ReportIncident.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="com.example.user.sindhuworld.ReportIncident">
    <include
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        layout="@layout/toolbar_layout"
        android:id="@+id/toolBar">
    </include>
    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:id="@+id/spinner"
        android:entries="@array/Select_following"
        android:gravity="center"
        android:layout_below="@id/toolBar"
        android:background="@drawable/dropdownimg"
        ></Spinner>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:id="@+id/sar">
    </FrameLayout>
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/pagdi">
    </FrameLayout>

</RelativeLayout>

ReportIncident.java 这里的下拉列表中有3个条目:select_following,sar,pagdi..i在选择了以下项目后不需要任何片段但是我想要的其余两个项目要在活动中添加的片段。建议用案例或任何替代方法编写的代码?

package com.example.user.sindhuworld;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;

public class ReportIncident extends AppCompatActivity {
Spinner sp;
    Toolbar toolbar;
    ViewPager viewPager;
    ViewPagerAdapter viewPagerAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_report_incident);
        toolbar=(Toolbar)findViewById(R.id.toolBar);
        setSupportActionBar(toolbar);
        viewPager=(ViewPager)findViewById(R.id.viewpager);

        sp=(Spinner)findViewById(R.id.spinner);
        sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                switch (position){
                    case 0:
                    case 1:
                    case 2:

                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

不需要像下面那样使用2个容器

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:id="@+id/sar">
</FrameLayout>
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/pagdi">
</FrameLayout>

它只能使用一个容器然后添加fragmetns并在需要时删除

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fragContainer">
</FrameLayout>

然后在您选择的微调器项目中,您应该只处理案例2和3,因为当点击 select_following 时您不会发生任何事情

switch (position){
    case 1:
        getSupportFragmentManager().beginTransaction().replace(R.id.fragContainer, new Sar()).commit();
        break;
    case 2:
        getSupportFragmentManager().beginTransaction().replace(R.id.fragContainer, new Pagdi()).commit();
        break;
}