我有两个 ViewModel。一个仅在 Fragment 中使用,另一个是来自 Activity 的共享 ViewModel。
分段:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewModel = ViewModelProviders.of(this).get(FragmentViewModel.class);
...
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
activityViewModel = ViewModelProviders.of(getActivity()).get(ActivityViewModel.class);
}
Run Code Online (Sandbox Code Playgroud)
但是为了知道我是否可以使用活动的 ViewModel 中的内容,我需要知道 是否在onActivityCreated(...)之后调用,onViewCreated(...)以便我可以根据我在活动的 ViewModel 中拥有的数据在 Fragment ViewModel 中请求我的数据。
总结一下:
确定onActivityCreated(...)是在onViewCreated(...)完成后调用吗?
我想禁用折叠工具栏的触摸行为滚动.如果由RecyclerView(正在工作)触发,它应该只是折叠.我想为什么不只是禁用焦点...
android:focusableInTouchMode="false"
但它不起作用.我可以改变layout_scrollFlags但是然后...我的问题是,有一个简单的解决方案吗?
XML:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/mCollapsingToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/header_size"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
...
app:layout_collapseMode="parallax"/>
<android.support.v7.widget.Toolbar
android:id="@+id/mToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
...
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud) android android-recyclerview android-collapsingtoolbarlayout
我正在寻找将字符串替换为以下(数字)格式的正则表达式:
输入示例:
00000
00440
235
+3484
-0004
-00
+0
Run Code Online (Sandbox Code Playgroud)
需要的结果:
0
440
235
3484
-4
0
0
Run Code Online (Sandbox Code Playgroud)
我试图修改以下内容...仅保留至少+和-并删除零,但我只是绕圈跑。可以帮我吗?
input.replaceAll("^(\\+?|-?)0+(?!)", "");
Run Code Online (Sandbox Code Playgroud)
PS:可以选择将+ 0 / -0显示为0,但这是一个加号。
当按下“返回”按钮时,我只想将对象信息从 Activity2 交换回 Activity1。
一切正常,除了在 Activity1onActivityResult(..)中永远不会被触发。因此我无法访问意图信息。有谁知道为什么?
我检查了这些答案,但它们不起作用:
我的代码(如果您需要更多,请告诉我):
AndroidManifest.xml:
<activity
android:name="com.example.Activity1"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.Activity2"
android:theme="@style/AppTheme.NoActionBar"
android:screenOrientation="portrait">
</activity>
Run Code Online (Sandbox Code Playgroud)
Activity1.java:
public class MainActivity extends AppCompatActivity {
// other stuff...
private void showActivity2(Test test) {
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("test", test.getSerializableObject());
startActivityForResult(intent, Activity.RESULT_OK);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode …Run Code Online (Sandbox Code Playgroud)