我用
extended activity在我的旧项目中,我想在公共onCreate()函数中使用startActivityForResult()

但是我不知道如何解决错误

System.err: Caused by: java.lang.Exception: Failed resolving method startActivityForResult on class android.support.v4.app.FragmentActivity


代码还可以。

activity.startActivityForResult( intent, this.MY_PERMISSION_REQUEST );


上面的代码在公共的onCreate()函数中。

但是当我升级所有npm软件包时,包括将android平台更新到v5.0.0,将android库更新到v28。

并从更新代码

class MainActivity extends android.app.Activity {




class MainActivity extends android.support.v7.app.AppCompatActivity {


旧代码只是行不通了。

System.err: Caused by: java.lang.Exception: Failed resolving method startActivityForResult on class android.support.v4.app.FragmentActivity


我认为可能与startActivityForResult()有关。

我是nativescript和android的新手。

如何在扩展活动中正确使用此功能?

我想得到这个答案。

但是,如果还有其他变通办法也将很好。

例如,我尝试使用旧代码

class MainActivity extends android.app.Activity {


以上之一,但不起作用。

System.err: com.tns.NativeScriptException:
System.err: Calling js method onViewAttachedToWindow failed
System.err:
System.err: TypeError: this._context.getSupportFragmentManager is not a function
System.err: File: "file:///data/data/com.testapp/files/app/tns_modules/tns-core-modules/ui/core/view/view.js, line: 190, column: 46
System.err:
System.err: StackTrace:
System.err:   Frame: function:'View._getRootFragmentManager', file:'file:///data/data/com.testapp/files/app/tns_modules/tns-core-modules/ui/core/view/view.js', line: 190, column: 47
System.err:   Frame: function:'View._getFragmentManager', file:'file:///data/data/com.testapp/files/app/tns_modules/tns-core-modules/ui/core/view/view.js', line: 215, column: 32
System.err:   Frame: function:'Frame._processNextNavigationEntry', file:'file:///data/data/com.testapp/files/app/tns_modules/tns-core-modules/ui/frame/frame.js', line: 134, column: 28
System.err:   Frame: function:'Frame._onAttachedToWindow', file:'file:///data/data/com.testapp/files/app/tns_modules/tns-core-modules/ui/frame/frame.js', line: 118, column: 14
System.err:   Frame: function:'AttachListener.onViewAttachedToWindow', file:'file:///data/data/com.testapp/files/app/tns_modules/tns-core-modules/ui/frame/frame.js', line: 35, column: 27
System.err:


如果有任何方法可以使代码startActivityForResult再次起作用,则一切正常。

我的AndroidManifest.xml包含

android:minSdkVersion="21"
android:targetSdkVersion="23"


这是否意味着所有> = 21的设备都将被接受,

android.support.v7.app.AppCompatActivity

文档显示版本25.1.0中已添加

我也需要更新我的AndroidManifest.xml吗?



更新

该代码来自https://docs.nativescript.org/core-concepts/android-runtime/advanced-topics/extend-application-activity#extending-activity

使用TYPESCRIPT

@JavaProxy("org.myApp.MainActivity")
class Activity extends android.support.v7.app.AppCompatActivity {
    private _callbacks: AndroidActivityCallbacks;
    public readonly MY_PERMISSION_REQUEST = 100;

    public onCreate(savedInstanceState: android.os.Bundle): void {
        if (!this._callbacks) {
            setActivityCallbacks(this);
        }

        this._callbacks.onCreate(this, savedInstanceState, super.onCreate);

        let intent: android.content.Intent = new android.content.Intent( ( <any> android.provider.Settings ).ACTION_HOME_SETTINGS );
        intent.setData( Uri.parse( "package:" + context.getPackageName() ) );
        let activity = app.android.foregroundActivity || app.android.startActivity;
        activity.startActivityForResult( intent, this.MY_PERMISSION_REQUEST );
    }


几乎都一样,但为startActivityForResult添加一些代码。

如果删除行startActivityForResult,则一切正常。



更新###

使用this.startActivityForResult()时出现相同的错误

System.err: Calling js method onCreate failed
System.err:
System.err: Error: java.lang.Exception: Failed resolving method startActivityForResult on class android.support.v4.app.FragmentActivity
System.err:     com.tns.Runtime.resolveMethodOverload(Runtime.java:1075)
System.err:     com.tns.Runtime.callJSMethodNative(Native Method)
System.err:     com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1116)
System.err:     com.tns.Runtime.callJSMethodImpl(Runtime.java:996)
System.err:     com.tns.Runtime.callJSMethod(Runtime.java:983)
System.err:     com.tns.Runtime.callJSMethod(Runtime.java:967)
System.err:     com.tns.Runtime.callJSMethod(Runtime.java:959)
System.err:     com.testapp.MainActivity.onCreate(MainActivity.java:18)
System.err:     android.app.Activity.performCreate(Activity.java:7009)
System.err:     android.app.Activity.performCreate(Activity.java:7000)




更新

my steps to creating the app

the code

最佳答案

android.support.v7.app.AppCompatActivityandroid.support.v4.app.FragmentActivity扩展。

因此,如果要使用AppCompatActivity,则应同时包含v4 compat库和v7 compat库。

10-07 19:27
查看更多