Articles of android fragments

确保类名存在,是公共的,并且具有带有类名和空构造函数的公共片段的空构造函数

我刚收到其中一个用户的崩溃报告,其中包含以下错误跟踪: Unable to instantiate fragment packageName.Wizard$WizardFirstPage: make sure class name exists, is public, and has an empty constructor that is public 这是类声明: public class Wizard extends Other public abstract class Other extends BaseActivity public abstract class BaseActivity extends ActionBarActivity 所有类都是公共的,已命名且没有用户定义的构造函数。 至于片段WizardFirstPage :(在Wizard定义) public class WizardFirstPage extends Fragment 也没有用户定义的构造函数。 我错过了什么?

片段getActivity()在Activity JUnit测试中返回null

我为Activity编写了Android JUnit测试实例化片段(实际上是制表符)。 在测试期间,当我尝试对这些选项卡执行任何操作时,它们会崩溃,因为其中的getActivity()方法返回null。 实际应用程序(不是测试)从不显示此行为,并且片段getActivity()始终返回正确的父活动。 我的测试用例如下: public class SetupPanelTest extends ActivityUnitTestCase { FSetup s; public SetupPanelTest() { super(MyAct.class); } protected void setUp() throws Exception { super.setUp(); startActivity(new Intent(), null, null); final MyAct act = getActivity(); AllTabs tabs = act.getTabs(); String tabname = act.getResources().getString(R.string.configuration); // This method instantiates the activity as said below s = (FSetup) tabs.showTab(tabname); […]

Android:使用带有自定义适配器的notifyDataSetChanged()的ListFragment刷新不起作用

我正在使用带有自定义列表适配器的ListFragment,我想通过单击ActionBar中的图标来刷新列表。 不幸的是它不起作用,我不明白为什么。 我的ItemListFragment: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(“debug”,”Hallo in ItemListFragment”); //show ActionBar setHasOptionsMenu(true); //get reference to activity myApp = getActivity().getApplication(); //check if intent from ItemListActivity is null Bundle be = getActivity().getIntent().getExtras(); if (be == null){ //if null read local feed feed = ReadFeed(fileName); Log.d(“debug”, “Lese Feed lokal :”+feed); }else{ //else get extras […]

片段作为静态类

只是一个简短的问题:在我在android文档中看到的所有示例中,片段都是静态内部类。 这是Android的要求吗? 或者他们可以设置为常规内部类? 是否有人了解Android的内部结构足以提供答案? 从我在OCJP文档中读到的内容来看,这些静态内部类根本不是类,而只是包含它们的类的静态成员,就像任何静态方法一样 – 例如main。 您的见解表示赞赏。

如何将标头和首选项对象添加到不使用XML文件而是使用Java的PreferenceActivity?

我有PreferenceFragment和PreferenceActivity,我通过这种方式从XML文件中添加标题: PreferenceActivity @Override public void onBuildHeaders(List target) { if(DEBUG) Log.i(“PreferenceActivity”, “onBuildHeaders() -> LogicAnalizerPrefs”); if(android.os.Build.VERSION.SDK_INT >= 12) { loadHeadersFromResource(R.xml.preference_header_logicanalizer, target); } } PreferenceFragment: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(DEBUG) Log.i(“PreferenceFragment”, “onCreate() -> LogicAnalizerPrefsFragment”); int res = getActivity().getResources().getIdentifier(getArguments().getString(“logicprefsheaders”), “xml”, getActivity().getPackageName()); addPreferencesFromResource(res); } 我有标题的XML文件是: R.xml.preference_header_logicanalizer: 这是我的一个xml文件,用于在单击标题时显示其中一个首选项: c1analizerprefs.xml: 所以在大屏幕上我得到了预期的结果,我只使用一个PreferenceFragment来添加我的4个标题。 但我在XML中定义的四个首选项如c1analizerprefs.xml几乎相同,唯一的变化是一个数字(例如:Pref.1,Pref.2,…)所以我想用Java添加它们以便我可以使用a for()添加4个或更多首选项,轻松更改重复次数,因为文本总是相同的我只更改数字所以这样我不需要为每个首选项创建一个XML文件,我动态创建它们在Java中。 如何在Java中添加首选项而不是使用XML文件? 在PreferenceFragment中,我只有addPreferencesFromResource()或addPreferencesFromIntent()。 有没有办法添加首选项对象?

在Fragment中调用findViewById来查找按钮返回null

我是Android开发的新手,我正在尝试编写一个小而简单的应用程序。 这个应用程序除了从2个EditTexts读取文本之外什么也不做,当用户按下“发送”按钮时,它应该将文本写入2个TextViews。 这些TextView中的每一个都在一个片段中。 但我无法将onClickEvent添加到Button,因为findViewById(R.id.sendTextButton)始终返回null。 我试图让这个应用程序工作,但我现在无法find任何解决方案。 以下是相关的codeBlocks: 片段的onCreateView函数,应该处理第一个输入(HeadlineFragment.java): Button sendButton = null; View inflatedView = null; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this.inflatedView = inflater.inflate(R.layout.headline_view, container, false); sendButton = (Button) inflatedView.findViewById(R.id.sendTextButton); if(sendButton == null) { Log.d(“debugCheck”, “HeadFrag: sendButton is null”); return inflatedView; } sendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { […]

旋转屏幕后找不到微调器

我正在使用’Fragment’来获得一个带有两个’片段’的布局,所以我的课程扩展了’Fragment’。 我在左侧’片段’上加载’ListView’,在右侧’片段’上加载了另一个修改后的’ListView’。 在这里,我有一个’Spinner’,我必须改变它的颜色。 我有这个代码: private void loadSpinner(int value) { //Not relevant code adapter = new ArrayAdapter(getActivity().getApplicationContext(), android.R.layout.simple_spinner_item, data); adapter.setDropDownViewResource(R.layout.spinner); spinner.setAdapter(adapter); } @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { String value = parent.getItemAtPosition(position).toString(); ((TextView) parent.getChildAt(0)).setTextColor(getResources().getColor(R.color.black)); //Some code } 上面的代码按预期工作UNTIL我旋转设备的屏幕。 在这里,我得到了一个nullpointerexception ((TextView) parent.getChildAt(0)).setTextColor(getResources().getColor(R.color.black)); 。 如果我评论上面的行,因为我在旋转屏幕前保存状态,在旋转屏幕后,我的数据将被恢复并且所有工作都按预期工作除了浅色的微调器因此不可见。 我知道我可以创建自己的’微调’布局并解决这个问题,但我想知道如何解决这个问题。

列出项目单击侦听器上的片段

我试图用一个OnItemClickListener在Android的ListFragment上做一个列表,但我不能,我点击n列表项,没有任何反应。 我是碎片的新手。 这是我的代码。 谢谢! public class MyFragment extends ListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v= inflater.inflate(R.layout.hello, container, false); ListView lv =(ListView) v.findViewById(android.R.id.list); // Listview on item click listener lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { // getting values from selected ListItem […]

如何在不同的片段中制作不同的菜单选项?

我希望在不同的fragment有完全不同的menu options 。我跟着这篇文章。但是我的片段菜单添加了活动菜单。但是我不希望在我的一些片段中有活动菜单。 在SlidingDrawerActivity : @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } 在我的片段中: public Friends_Status_Comment_Fragment(){ setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_add_comment,menu); super.onCreateOptionsMenu(menu, inflater); } 活动项目正在添加片段菜单。如何阻止它?

片段声明了不属于此FragmentManager的目标片段

我做了一个活动A,里面有一个片段x。 通过片段x,编辑单击事件上的文本项,我想打开另一个片段y,其中显示列表,我只需按列表上的名称,y片段关闭并将列表的选定名称发送到片段x编辑文本和我做的代码是 YFragment y = new YFragment(); y.setTargetFragment(x.class, code); getActivity().getSupportFragmentManager() .beginTransaction() .replace(R.id.frame, y) .addToBackStack(null).commit(); 并且在片段yi中,目标代码发送数据,但上面的代码块中存在问题。 如果我评论设置目标片段行代码将工作但没有用,因为数据将不会发送,但如果我运行应用程序此错误发生 java.lang.IllegalStateException:片段y {46d3d31#3 id = 0x7f090069}声明的目标片段x {e2c16#0 id = 0x7f090104 android:switcher:2131296516:0}不属于此FragmentManager!