小编Emm*_*ngo的帖子

setDrawerLayout(androidx.drawerlayout.widget.DrawerLayout) 已弃用

我正在尝试使用新的 Android 架构设置带有应用栏配置的导航抽屉布局。我遇到的问题是 android studio 告诉我设置抽屉布局的方式已被弃用。

这是我的 xml 配置


<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.appbar.MaterialToolbar
            android:id="@+id/top_app_bar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:theme="@style/MaterialTheme"
            style="@style/Widget.MaterialComponents.Toolbar.Primary"
            />

    </com.google.android.material.appbar.AppBarLayout>

    <androidx.drawerlayout.widget.DrawerLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/drawer_layout">

        <fragment
            android:id="@+id/nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/navigation_graph"/>

        <com.google.android.material.navigation.NavigationView
            android:id="@+id/navigation_view"
            android:layout_width="230dp"
            android:layout_height="match_parent"
            android:background="@drawable/gradient_background"
            app:itemTextColor="@android:color/black"
            app:menu="@menu/drawer_menu"
            android:layout_gravity="start"
            android:fitsSystemWindows="true"
            android:theme="@style/Theme.Design">

        </com.google.android.material.navigation.NavigationView>

    </androidx.drawerlayout.widget.DrawerLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

Run Code Online (Sandbox Code Playgroud)

这是我如何声明 AppBarConfiguration 和 Drawer Layout


    private AppBarConfiguration appBarConfiguration;
    private NavController navController;
    MaterialToolbar topAppBar;

    private ActionBarDrawerToggle actionBarDrawerToggle;
    DrawerLayout drawerLayout;
    NavigationView navigationView;

Run Code Online (Sandbox Code Playgroud)

这是我找到 NavController、topAppBar、drawerLayout 和 NavigationView 的地方

        navController = Navigation.findNavController(this, …
Run Code Online (Sandbox Code Playgroud)

appbar uinavigationcontroller android-studio navigation-drawer

13
推荐指数
2
解决办法
5581
查看次数

当我双击时,防止底部工作表对话框片段显示两次

您好,我有一个底部工作表对话框片段,当单击回收器视图中的项目时会显示该片段。底部表单实现的显示位于回收视图的适配器中。我遇到的问题是,当您快速双击项目以显示底部工作表时,它会显示两次,是否有一种方法可以将点击限制为仅一次点击,或者在显示底部工作表对话框片段时不再显示底部工作表对话框片段通过检查

以下是如何在回收视图中显示项目单击的底部工作表


@Override
    public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, final int position) {


        myViewHolder.cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                BottomSheetFragment bottomSheetFragment = new BottomSheetFragment();
                Bundle bundle = new Bundle();

                bundle.putInt("id",productList.get(position).getId());
                bundle.putString("name",productList.get(position).getName());
                bundle.putDouble("price",productList.get(position).getPrice());
                bundle.putInt("stock",productList.get(position).getStock());
                bundle.putInt("quantity",productList.get(position).getQuantity());
                bundle.putString("photo",productList.get(position).getPhoto());

                bottomSheetFragment.setArguments(bundle);
                bottomSheetFragment.show(fragmentManager, bottomSheetFragment.getTag());
            }
        });

    }

Run Code Online (Sandbox Code Playgroud)

我尝试通过执行以下操作来使用 Muhannad Fakhouri 答案

声明一个布尔值来显示 BottomSheet 是否显示

 private boolean isBottomSheetShowing = false;

Run Code Online (Sandbox Code Playgroud)

底部工作表中的实现


if(!isBottomSheetShowing){

                 isBottomSheetShowing = true;

                ItemBottomSheet itemBottomSheet = new ItemBottomSheet();
                Bundle bundle = new Bundle();

                bundle.putString("code",itemPosition.getCode());
                bundle.putString("name",itemPosition.getName());
                bundle.putString("description",itemPosition.getDescription());
                bundle.putString("upcCode",itemPosition.getUpcCode());
                bundle.putString("photoBlob",itemPosition.getPhotoBlob());
                bundle.putDouble("discount",itemPosition.getDiscount());
                bundle.putDouble("price",itemPosition.getPrice());
                bundle.putInt("available",itemPosition.getAvailable());

                itemBottomSheet.setArguments(bundle); …
Run Code Online (Sandbox Code Playgroud)

android android-studio bottom-sheet android-bottomsheetdialog

5
推荐指数
1
解决办法
5331
查看次数

AndroidX 活动结果 API onActivityCreated 已弃用

在应用程序级别 Gradle 中实现以下依赖项后

implementation "androidx.fragment:fragment:1.3.0-beta02"
implementation "androidx.activity:activity:1.2.0-beta02"
Run Code Online (Sandbox Code Playgroud)

我在 onActivityCreated 方法的片段中发现了以下警告

Overrides deprecated method in 'androidx.fragment.app.Fragment'
Run Code Online (Sandbox Code Playgroud)

实施该方法的新方法可能是什么?下面是我的 onActivityCreated 方法

implementation "androidx.fragment:fragment:1.3.0-beta02"
implementation "androidx.activity:activity:1.2.0-beta02"
Run Code Online (Sandbox Code Playgroud)

我正在使用 requestPermissionLauncher 的依赖项。

java android-fragments android-studio deprecation-warning androidx

4
推荐指数
1
解决办法
4064
查看次数

始终使文本输入布局中的前缀文本像提示一样可见

我在文本输入布局中有一个前缀文本,但仅当我单击文本输入编辑文本(位于具有前缀文本的文本输入布局内)时,它才会显示。如何使前缀文本始终显示提示

下面是我的文本输入编辑文本


<com.google.android.material.textfield.TextInputLayout
                android:id="@+id/til_number"
                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/til_country"
                android:layout_marginStart="30dp"
                android:layout_marginLeft="30dp"
                android:layout_marginTop="10dp"
                android:layout_marginEnd="30dp"
                android:layout_marginRight="30dp"
                android:layout_marginBottom="10dp"
                android:padding="5dp"
                app:boxBackgroundColor="#EFEFF2"
                app:prefixText="+01&#160;-&#160;"
                app:shapeAppearanceOverlay="@style/RoundedTextInputLayout">

                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/et_first_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:hint="@string/number"
                    android:inputType="phone"
                    android:maxLength="100"
                    android:textSize="15sp" />

            </com.google.android.material.textfield.TextInputLayout>


Run Code Online (Sandbox Code Playgroud)

我想实现的是

+01&#160;-&#160;

Run Code Online (Sandbox Code Playgroud)

前缀中的上述文本应始终显示

我尝试执行以下操作


app:prefixTextColor="@color/secondaryDarkColor"

Run Code Online (Sandbox Code Playgroud)

prefix android-studio android-textinputlayout textinputlayout

3
推荐指数
1
解决办法
4332
查看次数

无效的常量值文本 Flutter Google Fonts

我有一个文本,我正在使用 Google 字体进行样式设置并且工作正常,但是当我在文本之前添加 const 时,我收到无效的常量值错误

下面是我如何在没有 const 的情况下实现


Text(
    'Voila',
     style: GoogleFonts.dawningOfANewDay(fontSize: 30),
),

Run Code Online (Sandbox Code Playgroud)

下面是我尝试使用 const 实现的方法


const Text(
        'Voila',
         style: GoogleFonts.dawningOfANewDay(fontSize: 30),
),

Run Code Online (Sandbox Code Playgroud)

下面是我如何尝试使谷歌字体保持不变,但错误仍然存​​在


const Text(
              'Voila',
              style: const GoogleFonts.dawningOfANewDay(fontSize: 30),
            )

Run Code Online (Sandbox Code Playgroud)

flutter google-fonts flutter-text

3
推荐指数
1
解决办法
2634
查看次数

Flutter 将字符串转换为布尔值

我有一个字符串,我想将其转换为布尔值,下面是字符串的样子


String isValid = "false";

Run Code Online (Sandbox Code Playgroud)

字符串isValid可以是true或者false

有没有办法可以直接将此String isValid 转换为Boolean。我已经尝试过示例问题和解决方案,但它们只是转换硬编码的字符串,例如大多数答案只是当字符串为true

string boolean dart flutter

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

将单击侦听器设置为 TextInputEditText drawable Right/End android studio

我有一个文本输入布局,里面有文本输入编辑文本。文本输入编辑文本在末尾有一个 Drawable。我想要实现的是在单击时使可绘制对象在最后执行某些操作,例如显示 Toast 消息

下面是我的 XML 代码


<com.google.android.material.textfield.TextInputLayout
            android:id="@+id/til_toast"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:padding="3dp">

            <!--android:maxLength="13"-->
            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/et_toast"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableEnd="@drawable/ic_calendar"
                android:drawableRight="@drawable/ic_calendar"
                android:hint="@string/date_from"
                android:inputType="date" />

        </com.google.android.material.textfield.TextInputLayout>

Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点

android android-edittext android-textinputlayout android-textinputedittext

2
推荐指数
1
解决办法
535
查看次数

Gradle 插件仅支持 Kotlin Gradle 插件版本 1.3.40 及更高版本将 android studio gradle 从 4.2.2 升级到 7.0.0 时出错

我最近从 4.2.2 升级了我的 Gradle 版本。到 7.0.0。Android Studio 运行应用程序得很好,直到我升级并收到以下错误

The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.40 and higher.
The following dependencies do not satisfy the required version:
root project 'MyNewApp' -> androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0-alpha03 -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.20

Run Code Online (Sandbox Code Playgroud)

下面是我的项目级别grale

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.0.0'
        //classpath 'com.android.tools.build:gradle:4.2.2'

        def nav_version = "2.3.0-alpha03"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"

        classpath 'com.google.gms:google-services:4.3.8'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects …
Run Code Online (Sandbox Code Playgroud)

java android gradle kotlin android-studio

2
推荐指数
1
解决办法
6822
查看次数

Flutter Slidable SlidableAction 即使没有被按下也调用 onPressed

我正在使用一个名为flutter_slidable 的库。下面是我的 fetchItems 方法


static Future<List<Item>> fetchItems(String url) async {
    try {
      // pub spec yaml http:
      // import 'package:http/http.dart' as http;
      final response = await http.get(
          Uri.parse(
              url),
          headers: {
            "Content-Type": "application/json",
            "Authorization": "Bearer tltsp6dmnbif01jy9xfo9ssn4620u89xhuwcm5t3",
          }) /*.timeout(const Duration(seconds: Config.responseTimeOutInSeconds))*/;

      final List<Item> itemsList;

      if (response.statusCode == 200) {
        itemsList = json
            .decode(response.body)
        // In event of failure return line below
        //.cast<Map<String, dynamic>>()
            .map<Item>((json) => Item.fromJson(json))
            .toList();
      } else if (response.statusCode == 401) {
        itemsList = [];
      } else …
Run Code Online (Sandbox Code Playgroud)

dart flutter dismissible

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

Java 以 MM/dd/yyyy 格式获取下个月的 FirstDate 和 LastDate,即使输入不是该月的第一天

我下面有一个函数,它有一个输入日期,它将以格式返回下个月的第一个和最后一个日期MM/dd/yyyy

String string = "01/01/2022";
DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date dt = sdf .parse(string);
Calendar c = Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.MONTH, 1);  
String firstDate = sdf.format(c.getTime());
System.out.println("FirstDate:" + firstDate);
c.add(Calendar.MONTH, 1);
c.add(Calendar.DAY_OF_MONTH, -1);
String lastDate = sdf.format(c.getTime());
System.out.println("LastDate:" + lastDate);
Run Code Online (Sandbox Code Playgroud)

上面的内容会给我如下的输出

FirstDate:02/01/2022
LastDate:02/28/2022
Run Code Online (Sandbox Code Playgroud)

如果输入是上个月的第一天,这效果很好,我想要实现的是获取下一个月的 FirstDate 和 LastDate,month即使输入的日期不是该月的第一天,例如01/31/2022给出我下面的输出

FirstDate:02/28/2022
LastDate:03/27/2022
Run Code Online (Sandbox Code Playgroud)

但我仍然希望它能给我第一个

FirstDate:02/01/2022
LastDate:02/28/2022
Run Code Online (Sandbox Code Playgroud)

java datetime calendar date

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