如何在Android java代码中同时使用CordovaActivity和AppCompatActivity?

时间:2016-09-21 07:50:50

标签: java android cordova appcompatactivity

我正在制作Cordova插件,所以我需要使用CordovaActivity扩展MainActivity类。我还需要使用AppCompatActivity。在本机应用程序中,我使用AppCompatActivity扩展了MainActivity,一切正常,但在我的Cordova插件中,我无法延长两次。

我尝试启动一些代码以继续在后台运行。当我在onCreate中尝试这个时:

appCompat = new AppCompatActivity();
Intent intent = new Intent(this, MyClass.class);
appCompat.startService(intent);

我定义全局变量:

private AppCompatActivity appCompat;

我在运行时遇到关于上下文(appCompat)为null的错误。这是实际错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference

有没有人知道我如何使用AppCompatActivity而不将其用作扩展名?

(编辑:为了清楚起见,我已经附上了全班)

public class MainActivity extends CordovaActivity {
    private AppCompatActivity appCompat;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Context context = this.getBaseContext();
        Intent intent = new Intent(context, MyClass.class);
        appCompat = new AppCompatActivity();
        appCompat.startService(intent);  // CAUSES CRASH AT RUNTIME
    }
}

2 个答案:

答案 0 :(得分:1)

我更新了CordovaActivty类以扩展AppCompatActivity,因为我不得不处理工具栏。 我不确定它是否是正确的方法,但对我来说效果很好。

答案 1 :(得分:0)

事实证明,我不需要使用AppCompatActivity在后台运行服务。我可以简单地使用:

Intent intent = new Intent(this, MyClass.class);
startService(intent)

它运作得很好。