我正在创建一个Android应用程序,我想创建一个布局,它有两个并排的按钮和下面的三个按钮.我可以在这里找到我想要做的一个例子:
http://mycolorscreen.com/2014/11/29/flatdrop-zw-skin/
我正在努力让两个按钮在水平线性布局中并排,并且还有三个垂直线性布局的按钮.由于第一个线性布局是水平的,因此我的按钮也会变为水平.我的代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:weightSum="1">
<TextView
android:layout_width="164dp"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView2"
android:layout_gravity="left"
android:layout_weight="0.1" />
<TextView
android:layout_width="174dp"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_gravity="right"
android:layout_weight="0.1" />
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
style="@style/AppTheme"
android:longClickable="false"
android:weightSum="1">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btnFitnessGoalsDefaultString"
android:textColor="#FFFFFF"
android:id="@+id/btnFitnessGoals"
android:background="@drawable/buttondefault"
android:layout_marginBottom="10dp"
android:layout_weight="0.10"
android:layout_gravity="top" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="@string/btnNutritionGoalsDefaultString"
android:textColor="#FFFFFF"
android:id="@+id/btnNutritionGoals"
android:background="@drawable/buttondefault"
android:layout_weight="0.10" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btnBonusEventsDefaultString"
android:textColor="#FFFFFF"
android:id="@+id/btnBonusEvents"
android:background="@drawable/buttondefault"
android:layout_weight="0.10" />
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 片段getArguments()返回空指针异常.已经连续一天想到如何修复这个代码,整个互联网已经攀升,寻找答案.请帮我.像忠实的代码,但由于某种原因崩溃NullPointerException?
PS对不起我的英语,但我想你明白我想问的问题.))
//分段
public static AppsManagerFragment userFragList(int a){
AppsManagerFragment f = new AppsManagerFragment();
Bundle bundle = new Bundle();
bundle.putInt("secretKey", a);
f.setArguments(bundle);
return f;
};
public static AppsManagerFragment systemFragList(int a){
AppsManagerFragment f = new AppsManagerFragment();
Bundle bundle = new Bundle();
bundle.putInt("secretKey", a);
f.setArguments(bundle);
return f;
};
int getFragmentArg() {
return this.getArguments().getInt("secretKey"); // here there NPE
}
Run Code Online (Sandbox Code Playgroud)
//活动
private FragmentTabHost mTabHost;
private DataApps dApps;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.apps_manager_activity);
dApps = new DataApps(this);
// instance initialization
AppsManagerFragment userFrag = …Run Code Online (Sandbox Code Playgroud) 每次方向更改片段崩溃都会出错:
01-26 12:46:43.215 2895-2895/com.cbsystematic.mobile.itvdn
E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.cbsystematic.mobile.itvdn, PID: 2895
java.lang.RuntimeException: Unable to destroy activity {com.cbsystematic.mobile.itvdn/com.cbsystematic.mobile.itvdn.NavigationActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3671)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3689)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3889)
at android.app.ActivityThread.access$900(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1365)
at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:516)
at com.cbsystematic.mobile.itvdn.LessonsFragment.replaceFragment(LessonsFragment.java:126)
at com.cbsystematic.mobile.itvdn.LessonsFragment.onDetach(LessonsFragment.java:119)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:1954)
at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:313)
at …Run Code Online (Sandbox Code Playgroud) 我正在制作一个测验应用程序,其中我有一个viewPager,其中有15个页面,每个页面有1个问题,最后一页有一个提交按钮.现在我想在15个问题中选择最大数量的选项.以下是我的代码
QuestionPagerFragment.java:
public class QuestionPagerFragment extends Fragment {
protected View mView;
String pageData[]; //Stores the text to swipe.
String optionData[];//Stores the option data.
int rid;
RadioGroup group;
String ans;
String ans1;
String ans2;
SharedPreferences prefs;
public static final String MyPREFERENCES = "MyPrefs" ;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.page, container, false);
return mView;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
prefs = getActivity().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
pageData=getResources().getStringArray(R.array.desserts);
optionData=getResources().getStringArray(R.array.options);
group = (RadioGroup)mView.findViewById(R.id.group);
group.setOnCheckedChangeListener(new …Run Code Online (Sandbox Code Playgroud) android android-fragments android-radiogroup android-radiobutton
我试图将这个插件加载到我的一个片段中.我喜欢gradle文件中的dependencie:
compile "com.splitwise:tokenautocomplete:1.3.1@aar"
Run Code Online (Sandbox Code Playgroud)
我的碎片onCreateView看起来像:
View view = inflater.inflate(R.layout.fragment_tutor_setup, container, false);
String[] strings = new String[]{"photoshop",""};
adapter = new ArrayAdapter<String>(getActivity(), R.layout.fragment_tutor_setup, strings);
completionView = (ContactsCompletionView)view.findViewById(R.id.searchView);
completionView.setAdapter(adapter);
if (savedInstanceState == null) {
completionView.setPrefix("Skills: ");
}
return view;
Run Code Online (Sandbox Code Playgroud)
然后我像这样扩展一个ContactsCompletionView:
public class ContactsCompletionView extends TokenCompleteTextView {
public ContactsCompletionView(Context context) {
super(context);
}
public ContactsCompletionView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ContactsCompletionView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected View getViewForObject(Object object) {
String s = …Run Code Online (Sandbox Code Playgroud) 我在片段中有一个ListView.当我单击列表上的项目时,我想使用替换"启动"一个新的片段.这是结果.我应该只得到BUTTON:

这是在onItemClick里面:
Fragment nextFrag= new VitaminFragment();
FragmentTransaction transaction = this.getFragmentManager().beginTransaction();
transaction.replace(vitamin_fragment.getId(), nextFrag);
transaction.addToBackStack(null);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)
在VitaminFragment的onCreateView中:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("created", "vitamin_fragment_2");
return inflater.inflate(R.layout.supplement_properties_layout, container, false);
}
Run Code Online (Sandbox Code Playgroud)
和VitaminFragment XML(supplement_properties_layout)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="77dp" />
<com.astuetz.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:layout_height="48dip" />
<android.support.v4.view.ViewPager
android:id="@+id/supplements_properties_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/tabs" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
以编程方式创建VitaminWiki的布局:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle …Run Code Online (Sandbox Code Playgroud) 我对我创建的布局有问题.我使用导航抽屉作为主要导航模式.它看起来和我想要的工作,但问题是,在返回到保持的片段后ViewPager- 内部片段未显示.但是,它们会在首次打开应用程序时显示,并默认显示 - ViewPager保留Fragment.
其他导航抽屉Fragments显示正常,所以我不希望我的导航抽屉实现有任何问题
RecordFragment.java(片段持有ViewPager Fragments):
public class RecordFragment extends Fragment {
private ViewPager mViewPager;
public RecordFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.record_fragment, container, false);
//getActivity().setTitle(R.string.record);
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mViewPager = (ViewPager) view.findViewById(R.id.record_pager);
FragmentManager manager = getFragmentManager();
mViewPager.setAdapter(new MyFragmentPagerAdapter(manager));
}
class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm); …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager android-navigation
我得到了一个包含片段的片段,我想在onViewCreated或onCreateView上做一些事情.我怎样才能找到内部碎片?
这是容器碎片:
<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"
android:padding="@dimen/activity_horizontal_margin"
tools:context="xx.activity.fragment.SalesFragment">
<fragment android:id="@+id/fragment_category"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/priceEdit"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:name="xxfragment"
tools:layout="@layout/fragment_category"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
使用FragmentManager找不到内部fragment_category是不可能的
FragmentManager fm = getActivity().getSupportFragmentManager();
CategoryFragment catFrag = (CategoryFragment)
fm.findFragmentByTag(CategoryFragment.ID);
Run Code Online (Sandbox Code Playgroud)
返回null.
我是否必须让FragmentManager知道,还有另一个片段,还是有其他可能找到CategoryFragment?
我一直在寻找一段时间来试图找到如何使用MySQLite数据库中的信息填充列表视图.现在当我想到我终于找到了一些信息时,我想出了NullPointers.
这是我的代码(HomeFragment.java):
package zygs.com.seniorproject.fragments;
import android.app.Fragment;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
import zygs.com.seniorproject.R;
import zygs.com.seniorproject.database.DatabaseHandler;
import zygs.com.seniorproject.database.Inventory;
public class HomeFragment extends Fragment {
// Initializing Variables
Button Item_Button;
Button Display_Button;
EditText Box_Item_Des;
EditText Box_Item_Quant;
EditText Box_Item_ID;
final DatabaseHandler db = new DatabaseHandler(getActivity());
public HomeFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
final View …Run Code Online (Sandbox Code Playgroud) android android-listview android-fragments android-sqlite android-fragmentactivity
在投票结束或标记为重复之前PS看到问题.已经采取了所有可能的方法来隐藏菜单项但似乎没有工作.
我的options_menu.xml如下
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
android:title="@string/search_title"
android:icon="@drawable/ic_action_search"
android:showAsAction="collapseActionView|ifRoom"
android:actionViewClass="android.widget.SearchView" />
<item
android:id="@+id/menu_share"
android:icon="@android:drawable/ic_menu_share"
android:showAsAction="always"
android:title="Share"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
我在ParentFragment上显示此菜单,我在其中隐藏menu_share使用此代码
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.options_menu, menu);
menu.findItem(R.id.menu_share).setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
这会Share成功隐藏选项.现在这个片段打开了一个新片段,即一个儿童片段.
在这个子片段中,我想隐藏该Search项目并仅显示该Share选项.但是使用相同的代码在这里没有用.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.options_menu, menu);
menu.findItem(R.id.menu_search).setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
我甚至尝试过getActivity().invalidateOptionsMenu();但没有效果,Actionbar总是显示两个菜单项.请帮我弄清楚导致这种情况的原因.
错误日志
E/AndroidRuntime? FATAL EXCEPTION: main
Process: info.androidhive.slidingmenu, PID: 27321
java.lang.NullPointerException
at info.androidhive.slidingmenu.HomeFragment.onPrepareOptionsMenu(HomeFragment.java:476)
at android.app.Fragment.performPrepareOptionsMenu(Fragment.java:1794)
at android.app.FragmentManagerImpl.dispatchPrepareOptionsMenu(FragmentManager.java:1964)
at android.app.Activity.onPreparePanel(Activity.java:2665)
at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:540)
at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:881) …Run Code Online (Sandbox Code Playgroud) android menuitem android-fragments android-actionbar oncreateoptionsmenu