簡體   English   中英

OnActivityResult 沒有被調用

[英]OnActivityResult isn't being called

我正在調用 startActivityForResult 並且其他 Activity 正確啟動,但是沒有調用 onActivityResult 方法,它只是調用 OnCreate

這是我調用 startActivityForResult 的代碼

        val intent = Intent(this, MainActivity::class.java);
        startActivityForResult(intent, 2);

這是未調用的 MainActivity 上的 onActivityResult 方法。 這是代碼


 @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        System.out.println("ewe")
        super.onActivityResult(requestCode, resultCode, data)
        // check if the request code is same as what is passed  here it is 2
        if (requestCode == 2) {
            //do the things u wanted
            val repetitionTime = 10L;
            alarm = getSystemService(ALARM_SERVICE) as AlarmManager
            val intent = Intent(applicationContext, Pedometer::class.java)
            val pi = PendingIntent.getActivity(applicationContext, 0, intent, 0)

            val alarmInfo =  AlarmManager.AlarmClockInfo(System.currentTimeMillis() + 5000, pi);

            alarm!!.setAlarmClock(alarmInfo, pi);
        }
    }

我已經調試了代碼,並且根本沒有調用該方法。

我嘗試尋找答案並嘗試:

- 我正確調用 startActivityForResult 並使用正數。

- 我的清單上沒有 android:launchMode="singleInstance"。 這是我的清單文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.walker">

    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Walker">
        <activity android:name=".Pedometer"></activity>
        <activity android:name=".MainActivity" android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name="TaskPlanner" android:exported="true">  </receiver>

    </application>

</manifest>

我嘗試在互聯網上尋找更多答案並嘗試查看文檔但找不到任何東西。 任何幫助都非常感謝,提前感謝任何回答的人!

解決方案

看起來我只是不明白如何 startActivityForResult。 事實證明 startActivityForResult 啟動一個活動,然后在新啟動的活動完成后調用 onActivityResultMethod 。 我試圖創建一個新活動並在創建時使用它傳遞一個參數,所以它當然沒有用。

要將參數傳遞給我剛剛使用的新活動:

 val intent = Intent(this, MainActivity::class.java);
        intent.putExtra("result",2);
        setResult(2,intent);
        startActivity(intent);
        finish();//finishing activity

然后檢索值

  val extras = intent.extras
        if (extras != null) {
            val value = extras.getString("result")
            extras.putString("result", null);
}

看起來我只是不明白如何 startActivityForResult。 事實證明 startActivityForResult 啟動一個活動,然后在新啟動的活動完成后調用 onActivityResultMethod 。 我試圖創建一個新活動並在創建時使用它傳遞一個參數,所以它當然沒有用。

要將參數傳遞給我剛剛使用的新活動:

 val intent = Intent(this, MainActivity::class.java);
        intent.putExtra("result",2);
        setResult(2,intent);
        startActivity(intent);
        finish();//finishing activity

然后檢索值

  val extras = intent.extras
        if (extras != null) {
            val value = extras.getString("result")
            extras.putString("result", null);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM