Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用选项卡滑动视图:活动还是片段?_Android_Android Activity_Fragment_Android Tabs_Swipeview - Fatal编程技术网

Android 使用选项卡滑动视图:活动还是片段?

Android 使用选项卡滑动视图:活动还是片段?,android,android-activity,fragment,android-tabs,swipeview,Android,Android Activity,Fragment,Android Tabs,Swipeview,我正在尝试用标签(3个标签)对滑动视图进行编码。我希望每个“页面”都是一个活动。 我在这里使用代码,但不幸的是,每个“页面”只能有一个片段 我试图做的是将我的活动转换成片段(但我仍然得到一些NullPointerException) 使用片段而不是活动(我在其中使用:AlarmManager、OnCheckedChangeListener、PackageManager、AlertDialog…)安全吗? 有没有更好的办法解决我的问题 多谢各位 ==========================

我正在尝试用标签(3个标签)对滑动视图进行编码。我希望每个“页面”都是一个活动。 我在这里使用代码,但不幸的是,每个“页面”只能有一个片段

我试图做的是将我的活动转换成片段(但我仍然得到一些NullPointerException)

使用片段而不是活动(我在其中使用:AlarmManager、OnCheckedChangeListener、PackageManager、AlertDialog…)安全吗? 有没有更好的办法解决我的问题

多谢各位

======================================================================

(更新1)

以下是转换片段中的一些代码:

public class TabFragment extends Fragment implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {

private HashMap<String, String> myMap;
static private TextView usernameView;
private String mUsername;
private String permPassword;
private SharedPreferences pref;
private SharedPreferences prefCheckBox;
private TextView trackTextView;
private TextView logoutTextView;
private TextView settingsTextView;
private CheckBox trackCheckBox;
boolean isTrackingEnabled;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view =  inflater.inflate(R.layout.activity_home_profile, container, false);

    final SessionManager session = new SessionManager(getActivity().getApplicationContext());
    myMap = session.getUserDetails();
    usernameView = (TextView) getActivity().findViewById(R.id.usernameText);
    mUsername = myMap.get("username");
    usernameView.setText("");
    usernameView.setText(mUsername);

    trackTextView = (TextView) view.findViewById(R.id.tracking_textView);
    trackCheckBox = (CheckBox) view.findViewById(R.id.track_checkBox);
    logoutTextView = (TextView) view.findViewById(R.id.log_out);
    settingsTextView = (TextView) view.findViewById(R.id.settings);

    prefCheckBox = getActivity().getApplicationContext().getSharedPreferences("Tracking Checkbox", 0); // 0 - for private mode
    isTrackingEnabled = prefCheckBox.getBoolean("CheckBoxState", false);
    // display checkbox previous state
    trackCheckBox.setChecked(isTrackingEnabled);

    logoutTextView.setOnClickListener(this);
    trackTextView.setOnClickListener(this);
    settingsTextView.setOnClickListener(this);

    trackCheckBox.setOnCheckedChangeListener(this);

    return view;
}

不能在一个页面中使用多个活动

唯一的方法是碎片,碎片是为了支持这个特性而构建的

片段表示用户界面中的一个行为或一部分 活动。您可以在单个活动中组合多个片段以 构建多窗格UI并在多个活动中重用片段。你 可以将片段视为活动的模块化部分,它具有 它自己的生命周期,接收自己的输入事件,您可以 在活动运行时添加或删除(有点像“sub “活动”,可以在不同的活动中重用)

将活动转换为片段非常简单

  • 对于活动,您要扩展活动,请将其更改为片段
  • 将onCreate函数更改为onCreateView
  • 例如:

    活动-

    public class MainActivity extends Activity {
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }   
        }
    
    public class MainActivity extends Fragment {
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    
            View  view=inflater.inflate(R.layout.activity_main,null);
    
            return view;
        }
    }
    
    转换片段-

    public class MainActivity extends Activity {
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }   
        }
    
    public class MainActivity extends Fragment {
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    
            View  view=inflater.inflate(R.layout.activity_main,null);
    
            return view;
        }
    }
    
    最重要的

    在活动内部,我们通常使用此方法从xml中查找视图

    TextView textView= (TextView) findViewById(R.id.helletxtview);
    
    在片段内部,这将不起作用,因为findViewById在片段类中不可用,但use可以在根视图的帮助下使用,如下所示

    View view=inflater.inflate(R.layout.activity_main,null);
    TextView textView= (TextView) view.findViewById(R.id.helletxtview);
    

    不能在一个页面中使用多个活动

    唯一的方法是碎片,碎片是为了支持这个特性而构建的

    片段表示用户界面中的一个行为或一部分 活动。您可以在单个活动中组合多个片段以 构建多窗格UI并在多个活动中重用片段。你 可以将片段视为活动的模块化部分,它具有 它自己的生命周期,接收自己的输入事件,您可以 在活动运行时添加或删除(有点像“sub “活动”,可以在不同的活动中重用)

    将活动转换为片段非常简单

  • 对于活动,您要扩展活动,请将其更改为片段
  • 将onCreate函数更改为onCreateView
  • 例如:

    活动-

    public class MainActivity extends Activity {
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }   
        }
    
    public class MainActivity extends Fragment {
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    
            View  view=inflater.inflate(R.layout.activity_main,null);
    
            return view;
        }
    }
    
    转换片段-

    public class MainActivity extends Activity {
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }   
        }
    
    public class MainActivity extends Fragment {
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    
            View  view=inflater.inflate(R.layout.activity_main,null);
    
            return view;
        }
    }
    
    最重要的

    在活动内部,我们通常使用此方法从xml中查找视图

    TextView textView= (TextView) findViewById(R.id.helletxtview);
    
    在片段内部,这将不起作用,因为findViewById在片段类中不可用,但use可以在根视图的帮助下使用,如下所示

    View view=inflater.inflate(R.layout.activity_main,null);
    TextView textView= (TextView) view.findViewById(R.id.helletxtview);
    

    发布错误代码,以便我们了解问题。同样是的,在使用刷卡时应该使用碎片functions@AshwinNarayanan请检查我更新的问题。发布错误,您正在处理代码,以便我们了解问题。同样是的,在使用刷卡时应该使用碎片functions@AshwinNarayanan请检查我更新的问题。我必须将usernameView=(TextView)getActivity().findViewById(R.id.usernameText)更改为usernameView=(TextView)视图。findViewById(R.id.usernameText)我必须更改usernameView=(TextView)getActivity().findViewById(R.id.usernameText),其中usernameView=(TextView)view.findviewbyd(R.id.usernameText)