我想从android库类中调用一个方法,我已经将其作为androidlib.jar导入。因为我能够调用整个类库但我不想要它,但我想调用一个特定的库类方法。
我试过这样的东西,但它显示了java.lang.Nullpointer异常
这是我的库类(AndroidLiB.class),我已经导入了它的jar文件
public class AndroidLiB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.android_li_b);
startGPS();
}
public void startGPS()
{
Toast.makeText(getApplicationContext(),"Your GPS started",Toast.LENGTH_LONG).show();
}
}
这是我的应用程序类,我想从上面的类
调用一个方法 public class AndLib1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.and_lib1);
AndroidLiB abc = new AndroidLiB();
abc.startGPS();
}
}
但它不起作用
答案 0 :(得分:1)
我会做这样的事情:
public class Tool {
private Tool() {
// no direct instantiation
}
public static void startGPS(final Context context) {
Toast.makeText(context, "Your GPS started", Toast.LENGTH_LONG).show();
}
}
然后
public class AndroidLiB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.android_li_b);
Tool.startGPS(this);
}
}
和
public class AndLib1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.and_lib1);
Tool.startGPS(this);
}
}
答案 1 :(得分:1)
您可以扩展库类。例如:
public class YourActivity extends AndroidLib
{
super.onCreate(savedInstanceState);
setContentView(R.layout.and_lib1);
startGPS();
}
答案 2 :(得分:1)
如果您只想要jar中的方法,那么为什么需要扩展活动。我的建议是删除扩展活动将修复NPE错误。
试试这个,
public class AndroidLiB {
Activity activity;
AndroidLiB(Activity activity){
this.activity = activity;
}
public void startGPS()
{
Toast.makeText(activity,"Your GPS started",Toast.LENGTH_LONG).show();
}
}
在你的主要课堂电话中,如
AndroidLiB lib = new AndroidLiB (this);
lib.startGPS();
答案 3 :(得分:0)
您尝试做的事情并不是最好的做事方式,但我假设要问的问题是如何正确导入jar。如果是这样的话:
如果使用eclipse,
androidlib.jar
文件位于libs文件夹中。androidlib.jar
,然后选择Build Path > Add to Build Path
Properties > Java Build Path > Order and Export
,然后确保选中androidlib.jar
。您当前代码的问题在于,当您致电getApplicationContext()
时,Activity
尚未启动,因此没有上下文。一个快速而肮脏的解决方案是重写startGPS()
方法,如下所示:
public static void startGps(Context context, String message) {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
但我宁愿将该方法放在某些Utilities类中,甚至放在父Activity
类中。