从另一个Android项目调用

时间:2013-10-28 07:40:21

标签: java android

我有2个android项目,A和B.我想从A项目的一个类(没有Activity)调用一个B方法。 例如,如果B项目是用jdk 1.6编写的纯Java项目,那么我就没有任何问题。但在这种情况下,它会崩溃。 我在构建路径上添加了B项目,并在订单和导出时选择。

我不想使用jar库,因为我更喜欢将B项目改编为我的requeriments。我用这种方式开发纯Java项目,它很有用。我一路上都有自己的库。

我把代码放在这里:

A类:

package com.example.a;

import com.example.b.ClassNoActivity;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

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

        ClassNoActivity.showMessage(); // Here crashes
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

B类:

package com.example.b;

public class ClassNoActivity {

    public static void showMessage() {
        System.out.println("I'm a message.");
    }

}

logcat的:

10-28 08:31:40.926: W/dalvikvm(3466): VFY: unable to resolve static method 4617: Lcom/example/b/ClassNoActivity;.showMessage ()V
10-28 08:31:41.156: W/dalvikvm(3466): threadid=1: thread exiting with uncaught exception (group=0x40db41f8)
10-28 08:31:41.166: E/AndroidRuntime(3466): FATAL EXCEPTION: main
10-28 08:31:41.166: E/AndroidRuntime(3466): java.lang.NoClassDefFoundError: com.example.b.ClassNoActivity
10-28 08:31:41.166: E/AndroidRuntime(3466):     at com.example.a.MainActivity.onCreate(MainActivity.java:16)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at android.app.Activity.performCreate(Activity.java:4636)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1051)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1924)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1985)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at android.app.ActivityThread.access$600(ActivityThread.java:127)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at android.os.Looper.loop(Looper.java:137)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at android.app.ActivityThread.main(ActivityThread.java:4476)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at java.lang.reflect.Method.invokeNative(Native Method)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at java.lang.reflect.Method.invoke(Method.java:511)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:816)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:583)
10-28 08:31:41.166: E/AndroidRuntime(3466):     at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:0)

你可以在这里做的是在项目B中创建一个服务,其任务是调用你想要调用的方法。现在从项目A开始,您可以启动此服务并获得所需的结果。

答案 1 :(得分:0)

正如@desert所说,尝试将项目B添加为项目A中的库项目,您可以根据需要导入包...