标签: android-fragments

水平布局中的嵌套垂直布局

我正在创建一个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)

xml android android-layout android-fragments android-studio

0
推荐指数
1
解决办法
1万
查看次数

片段getArguments()返回空指针异常

片段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)

android android-fragments

0
推荐指数
1
解决办法
445
查看次数

碎片在方向变化时崩溃

每次方向更改片段崩溃都会出错:

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)

android android-layout android-fragments

0
推荐指数
1
解决办法
1367
查看次数

如何获取无线电组中所选单选按钮的ID

我正在制作一个测验应用程序,其中我有一个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

0
推荐指数
1
解决办法
4898
查看次数

扩展类com.tokenautocomplete.ContactsCompletionView时出错

我试图将这个插件加载到我的一个片段中.我喜欢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)

java android android-fragments tokenautocomplete

0
推荐指数
1
解决办法
514
查看次数

从片段替换片段会导致片段内容重叠

我在片段中有一个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)

android android-layout android-fragments

0
推荐指数
1
解决办法
5173
查看次数

导航抽屉+ ViewPager - 片段不显示

我对我创建的布局有问题.我使用导航抽屉作为主要导航模式.它看起来和我想要的工作,但问题是,在返回到保持的片段后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

0
推荐指数
1
解决办法
954
查看次数

在片段中查找片段

我得到了一个包含片段的片段,我想在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?

android android-fragments

0
推荐指数
1
解决办法
1121
查看次数

Android:NullPointerException无法将数据库加载到片段中的listview中

我一直在寻找一段时间来试图找到如何使用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

0
推荐指数
1
解决办法
1万
查看次数

Android:无法在Child Fragment的ActionBar中隐藏菜单项

在投票结束或标记为重复之前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

0
推荐指数
1
解决办法
1128
查看次数