如何在Android中创建共享按钮-Kotlin

伦扎·波尔扎(Renza Polza)

我如何制作一个有效的共享按钮,以便可以共享某些报价
(共享文本视图中的文本)

我在网上找到了以下代码:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

share_text_1_btn.setOnClickListener {
            val t1 = share_text_1_t.text.toString()
            val shareIntent = Intent()
            shareIntent.action = Intent.ACTION_SEND
            shareIntent.type="text/plain"
            shareIntent.putExtra(Intent.EXTRA_TEXT, t1)
            startActivity(Intent.createChooser(shareIntent,"Share via"))
        }
}

但是,当我使setOnClickListener处于活动状态时,打开片段时应用程序将崩溃,
并且没有任何红色的东西,

这些都是我的导入内容:

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Intent
import android.os.Bundle
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import androidx.drawerlayout.widget.DrawerLayout
import com.google.android.material.navigation.NavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import android.view.Menu
import android.widget.Toast
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.fragment_blogs.*
import kotlinx.android.synthetic.main.fragment_share.*

import com.example.blogesther.ui.home.HomeFragment
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*

这是我的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">


    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/share_title_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="25dp"
                android:text="@string/share_title"
                android:textSize="50sp"
                android:textFontWeight="100"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <TextView
                android:id="@+id/share_text_1_t"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="25dp"
                android:text="@string/share_text_1"
                app:layout_constraintEnd_toStartOf="@+id/share_text_1_btn"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/share_title_text" />

            <TextView
                android:id="@+id/share_text_2_t"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="50dp"
                android:text="@string/share_text_2"
                app:layout_constraintEnd_toStartOf="@+id/share_text_2_btn"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/share_text_1_t" />

            <TextView
                android:id="@+id/share_text_3_t"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="50dp"
                android:text="@string/share_text_3"
                app:layout_constraintEnd_toStartOf="@+id/share_text_3_btn"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/share_text_2_t" />

            <TextView
                android:id="@+id/share_text_4_t"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="50dp"
                android:text="@string/share_text_4"
                app:layout_constraintEnd_toStartOf="@+id/share_text_4_btn"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/share_text_3_t" />

            <TextView
                android:id="@+id/share_text_5_t"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="50dp"
                android:text="@string/share_text_5"
                app:layout_constraintEnd_toStartOf="@+id/share_text_5_btn"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/share_text_4_t" />

            <TextView
                android:id="@+id/share_text_6_t"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="50dp"
                android:text="@string/share_text_6"
                app:layout_constraintEnd_toStartOf="@+id/share_text_6_btn"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/share_text_5_t" />

            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/share_text_1_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="50dp"
                android:clickable="true"
                android:scaleX="1"
                android:scaleY="1"
                app:layout_constraintBottom_toBottomOf="@+id/share_text_1_t"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@+id/share_text_1_t"
                app:srcCompat="@drawable/ic_share_white_50dp" />

            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/share_text_2_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="50dp"
                android:clickable="true"
                android:scaleX="1"
                android:scaleY="1"
                app:layout_constraintBottom_toBottomOf="@+id/share_text_2_t"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@+id/share_text_2_t"
                app:srcCompat="@drawable/ic_share_white_50dp" />

            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/share_text_3_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="50dp"
                android:clickable="true"
                android:scaleX="1"
                android:scaleY="1"
                app:layout_constraintBottom_toBottomOf="@+id/share_text_3_t"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@+id/share_text_3_t"
                app:srcCompat="@drawable/ic_share_white_50dp" />

            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/share_text_4_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="50dp"
                android:clickable="true"
                android:scaleX="1"
                android:scaleY="1"
                app:layout_constraintBottom_toBottomOf="@+id/share_text_4_t"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@+id/share_text_4_t"
                app:srcCompat="@drawable/ic_share_white_50dp" />

            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/share_text_5_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="50dp"
                android:clickable="true"
                android:scaleX="1"
                android:scaleY="1"
                app:layout_constraintBottom_toBottomOf="@+id/share_text_5_t"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@+id/share_text_5_t"
                app:srcCompat="@drawable/ic_share_white_50dp" />

            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/share_text_6_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="50dp"
                android:clickable="true"
                android:scaleX="1"
                android:scaleY="1"
                app:layout_constraintBottom_toBottomOf="@+id/share_text_6_t"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@+id/share_text_6_t"
                app:srcCompat="@drawable/ic_share_white_50dp" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

这是logcat:

2020-03-17 12:29:03.153 28028-28028/com.example.blogesther E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.blogesther, PID: 28028
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.blogesther/com.example.blogesther.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.floatingactionbutton.FloatingActionButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3121)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3264)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7063)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.floatingactionbutton.FloatingActionButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at com.example.blogesther.MainActivity.onCreate(MainActivity.kt:50)
        at android.app.Activity.performCreate(Activity.java:7327)
        at android.app.Activity.performCreate(Activity.java:7318)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3101)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3264) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7063) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 
网络鲨鱼

尝试这个:

val share_text_1_btn = findViewById<com.google.android.material.floatingactionbutton.FloatingActionButton>(R.id.share_text_1_btn)
share_text_1_btn.setOnClickListener { 
            val intent= Intent()
            intent.action=Intent.ACTION_SEND
            intent.putExtra(Intent.EXTRA_TEXT,"Hey Check out this Great app:")
            intent.type="text/plain"
            startActivity(Intent.createChooser(intent,"Share To:"))
}

关于包含多个应用程序的隐式意图的文档

您也可以通过使用Xml onClick属性来做到这一点,只需将其添加到按钮并在错误下拉列表中自动生成函数(alt + enter)

android:onClick="shareIntent"

然后,只需将Click侦听器的内容复制到生成的函数即可。快速简便的解决方案避免了您可能会获得的大多数空指针异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Kotlin 中创建共享元素转换侦听器?

来自分类Dev

如何在Kotlin的Android共享首选项中存储2D数组?

来自分类Dev

如何在片段Android Kotlin之间共享数据/对象

来自分类Dev

如何在Android Kotlin中使用onclicklistner获取按钮文本?

来自分类Dev

如何在Kotlin中初始化按钮数组

来自分类Dev

如何在Kotlin Android中为数据类创建构造函数?

来自分类常见问题

如何在Kotlin中创建匿名接口实例?

来自分类Dev

如何在Kotlin中从字符串创建枚举?

来自分类Dev

如何在Kotlin中创建无限长的序列

来自分类Dev

如何在Kotlin中创建视图扩展功能

来自分类Dev

如何在Kotlin中创建回调函数?

来自分类Dev

如何在Kotlin中创建泛型函数

来自分类Dev

如何在Kotlin中创建可变的字母列表?

来自分类Dev

如何在Kotlin中为enumValues <T>创建通用函数?

来自分类Dev

如何在Kotlin中回调使用ID创建的视图

来自分类Dev

如何在Kotlin中创建对类进行操作的扩展功能?

来自分类Dev

如何在Android和JVM目标之间共享Java代码(使用Kotlin Multiplatform)?

来自分类Dev

如何在Android Kotlin中假装单击tabLayout?

来自分类Dev

Android Studio-如何在Kotlin中执行doubleClick?

来自分类Dev

如何在Android(kotlin)中访问资产打包数据

来自分类Dev

如何在Kotlin的应用购买中实现Android?

来自分类Dev

如何在 Kotlin 中重构这个 Android TakePicture 代码?

来自分类Dev

无法在Android Studio中创建Kotlin片段

来自分类Dev

使用 Kotlin 在 android 中动态创建控件

来自分类Dev

如何在Android-Kotlin中不具有构造函数值的情况下创建存储库对象?

来自分类常见问题

如何在Kotlin中创建View类对象?什么是AttributeSet?如何为视图创建它?

来自分类Dev

Android/Kotlin - 创建两个按钮并应用约束

来自分类Dev

如何在iOS 9中创建共享按钮?

来自分类Dev

如何在单个页面中创建多个共享按钮

Related 相关文章

  1. 1

    如何在 Kotlin 中创建共享元素转换侦听器?

  2. 2

    如何在Kotlin的Android共享首选项中存储2D数组?

  3. 3

    如何在片段Android Kotlin之间共享数据/对象

  4. 4

    如何在Android Kotlin中使用onclicklistner获取按钮文本?

  5. 5

    如何在Kotlin中初始化按钮数组

  6. 6

    如何在Kotlin Android中为数据类创建构造函数?

  7. 7

    如何在Kotlin中创建匿名接口实例?

  8. 8

    如何在Kotlin中从字符串创建枚举?

  9. 9

    如何在Kotlin中创建无限长的序列

  10. 10

    如何在Kotlin中创建视图扩展功能

  11. 11

    如何在Kotlin中创建回调函数?

  12. 12

    如何在Kotlin中创建泛型函数

  13. 13

    如何在Kotlin中创建可变的字母列表?

  14. 14

    如何在Kotlin中为enumValues <T>创建通用函数?

  15. 15

    如何在Kotlin中回调使用ID创建的视图

  16. 16

    如何在Kotlin中创建对类进行操作的扩展功能?

  17. 17

    如何在Android和JVM目标之间共享Java代码(使用Kotlin Multiplatform)?

  18. 18

    如何在Android Kotlin中假装单击tabLayout?

  19. 19

    Android Studio-如何在Kotlin中执行doubleClick?

  20. 20

    如何在Android(kotlin)中访问资产打包数据

  21. 21

    如何在Kotlin的应用购买中实现Android?

  22. 22

    如何在 Kotlin 中重构这个 Android TakePicture 代码?

  23. 23

    无法在Android Studio中创建Kotlin片段

  24. 24

    使用 Kotlin 在 android 中动态创建控件

  25. 25

    如何在Android-Kotlin中不具有构造函数值的情况下创建存储库对象?

  26. 26

    如何在Kotlin中创建View类对象?什么是AttributeSet?如何为视图创建它?

  27. 27

    Android/Kotlin - 创建两个按钮并应用约束

  28. 28

    如何在iOS 9中创建共享按钮?

  29. 29

    如何在单个页面中创建多个共享按钮

热门标签

归档