从库(jar)调用方法



我正在努力了解Android中库的使用情况。所以我创建了一个非常简单的库,并将其导入到我的项目中。我想调用MyOperations.jar(库文件)中的方法cubeOf()。没有生成错误,但运行时应用程序意外停止。

MainActivity.java类(在MyApplication中):

package com.sam.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
import com.sam.mylibrary.MyOperations;
public class MainActivity extends Activity {
    TextView tv1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1 = (TextView) findViewById(R.id.textView1);
        MyOperations op = new MyOperations();
        int a = op.cubeOf(8); // Just a random number
        tv1.setText(a);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

MyOperations.java类(在MyLibrary中):

package com.sam.mylibrary;
public class MyOperations {
    public static void main(String[] arg) {
    }
    public static int cubeOf(int i) {
        int c = i*i*i;
        return c;
    }
}

已解决

感谢回复,我通过这篇文章解决了这个问题

更改

    tv1.setText(a);

带有

 tv1.setText(String.valueOf(a));

在您的情况下,您使用a作为R.string的索引,如果它不存在,ResourceNotFoundException将被抛出

您没有提到应用程序崩溃的原因。我认为可能有两个问题:

1添加到上面的blackbelt答案中:

你可以简单地使用:

放置setText("+a")

因此,将"a"用作数字与字符串不会混淆

2您可能存在生成路径问题

看看这个答案:

如何在Android项目中使用外部JAR?

如果您有一个非常新版本的Eclipse/ADT,则文件夹应称为"libs",否则文件夹称为"lib"(Eclipse/ADTTBD)

此外;Java构建路径"->quot;订单和出口;请确保您正在检查外部库,尤其是来自其他包的库。

因此,为了确认早期的响应,您在onCreate中尝试了两个更改?也就是说,

    int a = MyOperations.cubeOf(8); // Just a random number
    tv1.setText(String.valueOf(a));
  1. 静态调用静态方法(甚至不要将new作为MyOperations
  2. 将字符串传递给setText

最新更新