在主要活动中,我创建了两个用作选项卡式菜单的片段.其中一个片段包含一个列表,其中列表项在单击时开始新活动.我想使用Up Action/Navigation按钮从新活动返回到片段(列表),但不显示任何列表,只显示空标签.我已将parent活动声明为manifest.xml中的主要活动.
当我使用手机的后退按钮时它工作正常.
List是在fragment的onViewCreated方法中创建的.
清单:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Main2Activity"
android:parentActivityName=".MainActivity" >
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
使用listView启动新活动的片段:
public static class frag extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public frag() {
}
public static frag newInstance(int sectionNumber) {
frag fragment = new rangingFrag();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) …Run Code Online (Sandbox Code Playgroud) 我得到这个StackOverFlow错误,我完全理解它,但问题是我不处理大数据,那么如何产生这个错误呢?
我有一个活动,Framelayout,一个片段,3个选项.
在片段中,当你单击其中一个选项时,它会重新创建片段并放置随机数,MAX是15,所以它不是那么大,当用户点击这么快的选项导致这个溢出时会发生这个错误.
这是生成的代码,有关"增强"它的任何想法吗?我不知道这个代码对于momery使用是否是一种不好的做法.
private static List<Integer> SavedNumbers;
public static void SetupSavedNumbersLIst(){
SavedNumbers = new ArrayList<>();
}
static List<Integer> range;
private static void AddDiff(int mMAX){
range = new ArrayList<>();
for(int i = 0 ; i < mMAX ; i++){
range.add(i);
}
range.removeAll(SavedNumbers);
}
private static int ReturnIfDuplic(int mMAX){
AddDiff(mMAX);
return new Random().nextInt(range.size());
}
public static int ReturnUniqueSavedNumber(int mMAX){
int Random = ReturnRandom(mMAX);
if(SavedNumbers != null && SavedNumbers.size() > 0) {
if(DoesSavedNumberExist(Random)){
return ReturnIfDuplic(mMAX);
} else {
SavedNumbers.add(Random);
return …Run Code Online (Sandbox Code Playgroud) 我有一个具有一个活动的应用程序,此活动有一个片段。在此片段中,我在Listview中显示“待处理订单”。我设置了我的方法,以每55秒一次在我的数据库中为挂起的订单重新加载搜索。我每60秒重新加载一次活动。问题是,当片段被加载时出现此错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'java.io.File android.content.Context.getCacheDir()'
而且我正在尝试跟踪此问题,但这并不是一件容易的事,因为我仍然是Android开发的初学者。
这是片段:
public class PendingOrdersFragment extends Fragment implements AdapterView.OnItemClickListener {
ListView lstOrders;
ArrayList<ChefOrderList> orderLists;
TextView empty;
private SwipeRefreshLayout mSwipeRefreshLayout;
private final Handler handler = new Handler();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_list, null);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
doTheAutoRefresh();
lstOrders = (ListView) view.findViewById(lstFood);
lstOrders.setOnItemClickListener(this);
empty = (TextView) view.findViewById(R.id.empty);
mSwipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_refresh);
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorPrimary);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if (NetworkHelper.isOnline(getActivity())) …Run Code Online (Sandbox Code Playgroud) 我想隐藏在android中的片段中的键盘.因为一旦它显示它仍然在所有片段中可见.我尝试这种方法
public static void hideKeyboard(Context ctx) {
InputMethodManager inputManager = (InputMethodManager) ctx
.getSystemService(Context.INPUT_METHOD_SERVICE);
// check if no view has focus:
View v = ((Activity) ctx).getCurrentFocus();
if (v == null)
return;
inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
Run Code Online (Sandbox Code Playgroud)
并在按钮单击时调用此方法
signIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideKeyboard(ctx);
login();
}
});
Run Code Online (Sandbox Code Playgroud)
但这会给出错误"java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.Object android.content.Context.getSystemService(java.lang.String)'"
此视图不受约束,它只有设计时间位置,因此除非添加约束,否则它将跳转到(0,0)
布局编辑器允许您将小部件放在画布上的任何位置,并使用设计时属性(例如layout_editor_absolute X)记录当前位置.这些属性不会在运行时应用,因此如果您在设备上推送布局,窗口小部件可能出现在与编辑器中显示的位置不同的位置.要解决此问题,请通过从边连接拖动来确保窗口小部件具有水平和垂直约束
java android android-layout android-fragments android-studio
我在下面有这个代码.它在Activity之前有效.现在我想将它转换为Fragment.我尝试过context.getContentResolver(); 或getActivity().getContentResolver(); 但它不起作用.如何解决这个问题?
public class MyFragmentA extends Fragment {
//song list variables
private ArrayList<Song> songList;
private ListView songView;
public Context context;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myFragmentView = inflater.inflate(R.layout.fragment_a, container, false);
//retrieve list view
songView = (ListView) myFragmentView.findViewById(R.id.song_list);
//instantiate list
songList = new ArrayList<Song>();
//get songs from device
getSongList();
//sort alphabetically by title
Collections.sort(songList, new Comparator<Song>(){
public int compare(Song a, Song b){
return a.getTitle().compareTo(b.getTitle());
}
});
//create and set adapter
SongAdapter songAdt …Run Code Online (Sandbox Code Playgroud) 我正在写一个Android应用程序.我有一个MainActivity.MainActivity有Viewpager,它有三个片段.我还有另一个名为CreateStudyActivity的活动.该类创建一个Object并将其返回给MainActivty.没有必要更改片段,我不想将片段共享给其他活动.
现在我的问题.为每个Activity创建一个片段是一个好习惯.还是矫枉过正?
提前致谢
问题很简单:Android Fragment是一个不同于Activity的Linux进程吗?
我想以编程方式在线性布局的底部设置粗边框颜色.我找到了很多代码,但我找不到我需要的东西.
码:
LinearLayout li=new LinearLayout(getActivity());
li.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
li.setOrientation(LinearLayout.VERTICAL);
Run Code Online (Sandbox Code Playgroud)
谢谢.