如何在另一个项目中将项目用作库?

时间:2012-03-28 13:04:00

标签: java android

My Rgactivity  code is here:

package com.apcl.skd;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.LinearLayout;

public class RgActivity extends Activity {
    /** Called when the activity is first created. */

    LinearLayout lv1, lv2;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        lv1=(LinearLayout)findViewById(R.id.lv1);
        lv2=(LinearLayout)findViewById(R.id.lv2);

        setColor(Color.BLACK,Color.RED);

    }

    public void setColor(int c, int d){

        lv1.setBackgroundColor(c);
        lv2.setBackgroundColor(d);

    }


}

现在在另一个项目中我使用这个RgActivity项目作为库文件,现在我想在另一个项目中使用这个setcolor方法,所以在一个新项目中我将这个项目作为库导入并执行以下操作:

package com.pack.color;

import com.apcl.skd.RgActivity;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.LinearLayout;

public class ColorActivity extends RgActivity {
    /** Called when the activity is first created. */
    LinearLayout lv1,lv2;
@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    lv1=(LinearLayout)findViewById(R.id.lv1);
    lv2=(LinearLayout)findViewById(R.id.lv2);

    setColor(Color.BLACK,Color.BLUE);



}



}

但是当我运行它时,布局中没有任何改变,如何使其工作?

2 个答案:

答案 0 :(得分:3)

您已在lv1中重新声明lv2ColorActivitysetColor()方法设置超类中对象的颜色。

因此,删除lv1lv2ColorActivity的声明可以解决您的问题。

顺便说一下:
为什么您的两个onCreate()方法完全相同。在您的超级课程中,您分配的是lv1lv2,但您要在ColorActivity课程中重新分配。由于您的RgActivity类应该是库的一部分,因此您可能应该删除这些初始化。

答案 1 :(得分:0)

setColor(Color.Black,Color.Red)

等同于setColor(int,int)while lv1.setBackgroundcolor()  需要一个正确形成的打包的整数,由4个字节组成:alpha,red,green,blue。

如果您尝试

Log.w("Colordesc",c + "")

你会看到一个int -16777216,所以你需要的是像

lv1.setBackgroundcolor(0xff0000ff).

此外,您可以删除大量不需要的冗余代码。