从库中调用方法(jar)

时间:2013-12-14 20:45:29

标签: android

我正在尝试了解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;
    }
}

已解决!

感谢您的回复,我通过this article解决了问题。

3 个答案:

答案 0 :(得分:0)

更改

    tv1.setText(a);

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

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

答案 1 :(得分:0)

您没有提及申请崩溃的原因。我相信可能存在两个问题:

1添加到上面的黑带答案:

你可能只是使用:

把setText(“”+ a)

所以没有混淆'a'被用作数字与字符串

2您可能遇到构建路径问题。

看看这个答案:

How can I use external JARs in an Android project?

如果您有最新版本的Eclipse / ADT,该文件夹应该被称为'libs',否则该文件夹被称为'lib'(Eclipse / ADT TBD)

此外,“Java Build Path” - > “订购和导出”确保您正在检查外部库,特别是如果来自不同的包。

答案 2 :(得分:0)

为了确认之前的回复,您在onCreate中尝试了两个更改?也就是说,

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