首页 > 解决方案 > 我的应用程序在打开时崩溃,我认为这是由于 swisseph.jar

问题描述

我一直在开发一个应用程序,发现一个特定的代码不起作用,我创建了一个新项目来测试以找到原因,但是我注意到我的 android 应用程序在我启动时崩溃了,这里是代码

package my.testapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

import swisseph.SweDate;
import swisseph.SwissEph;
import swisseph.SwissData;
import swisseph.SweConst;


public class MainActivity extends AppCompatActivity {

    private TextView txtBox;
    int Year, Month, Day, isun, imoon, iflag;
    double Hour,Min,julDay;

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

        Year = 2021;
        Month = 02;
        Day = 10;
        Hour = 14;
        Min = 30;

        julDay = SweDate.getJulDay(Year,Month,Day,Hour);

        isun = SweConst.SE_SUN;
        imoon = SweConst.SE_MOON;
        iflag = SweConst.SEFLG_SWIEPH;
        double [] xx = new double[0];
        StringBuffer serr = new StringBuffer();

        SwissEph sw = new SwissEph();
        int sunLon = sw.swe_calc_ut(julDay,isun,iflag,xx,serr);
        int moonLon = sw.swe_calc_ut(julDay,imoon,iflag,xx,serr);

        txtBox = this.findViewById(R.id.txtBox);
        txtBox.setText(
                "GDate" + Day + "/" + Month + "/" + Year +
                "JDate" + julDay +
                "Sun Long" + sunLon +
                "Moon Long" + moonLon
        );
    }
}

我确实在依赖项下包含了 swisseph jar 文件,并且我已将 jar 文件放在 app 下的 libs 文件夹中。我对android java编程真的很陌生,如果这看起来很简单,我很抱歉。

标签: javaandroidcrash

解决方案


该错误是由于数组大小不正确引起的,因为数组不能为零,如下所示:

double [] xx = new double[0];

该数组应如下所示:

double [] xx = new double[6];

然后在中引用:

 SwissEph sw = new SwissEph();
        int sunLon = sw.swe_calc_ut(julDay,isun,iflag,xx[0],serr);
        int moonLon = sw.swe_calc_ut(julDay,imoon,iflag,xx[0],serr);

推荐阅读