簡體   English   中英

如何將AppCompatActivity更改為片段

[英]How to Change AppCompatActivity to Fragment

我是開發Android應用程序的新手。 我的選項卡使用片段,但我遵循使用AppCompatActivity的教程不能將它們結合在一起。 我想學習如何將AppCompatActivity更改為Fragment。

有一些代碼:

UserInfo.java這部分應該使用片段。

public class UserInfo extends AppCompatActivity{

    @Bind(R.id.passport_type)
    BetterSpinner spinner_passport;

    public UserInfo() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.user_info);
        ButterKnife.bind(this);

        String[] list = getResources().getStringArray(R.array.passport_type);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, list);

        spinner_passport.setAdapter(adapter);
    }


    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.user_info, container, false);
    }

}

這是發生錯誤的代碼:

private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new UserInfo(), "個人信息");
        adapter.addFragment(new TwoFragment(), "健康信息");
        adapter.addFragment(new ThreeFragment(), "個人證件");
        viewPager.setAdapter(adapter);
    }

新的UserInfo()有錯誤。 錯誤消息是:

Wrong 1st argument type. Found: 'com.chinatown.wangjian.chinatown_userprofile.UserInfo', required: 'android.support.v4.app.Fragment' less... 

addFragment
(android.support.v4.app.Fragment,
String)
in ViewPagerAdapter cannot be applied
to
(com.chinatown.wangjian.chinatown_userprofile.UserInfo,
String)

我真的想學習如何將Fragment更改為任何教程,否則將不勝感激。 非常感謝! 如果需要,我會上傳更多詳細信息。

您需要弄清楚Butterknife是如何在Fragments中工作的,但是我認為您已經接近了,您需要使用它

class UserInfo extends Fragment 

(並確保您導入android.support.v4.app.Fragment

然后,最好將所有代碼從onCreate移到OnCreateView並重新組織代碼,如下所示

View v = inflater.inflate(R.layout.user_info, container, false);

// TODO: v.findViewById(R.id.passport_type)
// TODO: Set the adapter 

return v;  // this replaces 'setContentView' 

無論你得到一個錯誤與this ,將其更改為getActivity()getActivity().getResources()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM