[英]Fragment Transaction not recognizing my fragment as a fragment
所以我正在實現FragmentActivity並試圖添加一個片段,但是我遇到了多個問題。 我之前已經做過,實際上正在使用與上一個項目相同的代碼(它在其中工作),但是由於某種原因,它在這里不起作用。 這是我的代碼:
package silversphere.eyeon;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.LinearLayout;
public class AlarmsActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setId(40000);
FragmentManager man = getFragmentManager();
FragmentTransaction trans = man.beginTransaction();
Alarm_Landing_Page_Fragment frag = new Alarm_Landing_Page_Fragment();
trans.add(40000, frag);
}
}
我在layout.setId()調用以及trans.add()上遇到錯誤。 layout.setId()表示“類型為ID的預期資源”,而事務處理則表示“無法解析方法add(int,silversphere.eyeon.alarm_landing_page_fragment)”,這對我來說表明由於某種原因它無法將Alarm_LandingPage_Fragment識別為片段,但絕對應該。 這是Alarm_Landing_Page_Fragment的聲明:
public class Alarm_Landing_Page_Fragment extends Fragment {
任何建議表示贊賞!
您正在將支持庫中與Fragment
相關的類與SDK附帶的類混合在一起。 使用Fragments時,請僅使用支持庫類或SDK的內置類(我的意思是僅與Fragment
相關的類)。
如果您的類Alarm_Landing_Page_Fragment
從支持庫擴展了Fragment
,則更改:
import android.app.FragmentManager;
import android.app.FragmentTransaction;
// ...
FragmentManager man = getFragmentManager();
至:
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
// ...
FragmentManager man = getSupportFragmentManager();
否則,請勿擴展FragmentActivity
並僅使用SDK中與Fragment相關的類。
編輯:
另請參見以下答案: 錯誤誇大類片段(作為ListFragment)
問題與setId
。 您必須創建一個<id>
資源:
/res/values/ids.xml
<resources>
<item type="id" name="myId" />
</resources>
然后,在您的文件上:
LinearLayout layout = new LinearLayout(this);
layout.setId(R.id.myId);
...
trans.add(R.id.myId, frag);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.