我正在努力了解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));
- 静态调用静态方法(甚至不要将
new
作为MyOperations
) - 将字符串传递给setText