2012-03-28 112 views
2
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); 



} 



} 

但是当我运行它时,如何使这项工作没有任何改变?

回答

3

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

因此,删除lv1lv2的声明ColorActivity应解决您的问题。

顺便说一句:
为什么你的两个onCreate()方法不完全一样的。在你的超类中,你正在分配lv1lv2,但是你将在ColorActivity类中重新分配它。由于您的RgActivity类应该是库的一部分,因此您应该删除这些初始化。

+0

我在coloractivity class中删除了lv1和lv2的声明。现在我的coloractivity类看起来像这样:public class ColorActivity extends RgActivity {0}第一次创建活动时调用。 */ \t @Override 公共无效的onCreate(捆绑savedInstanceState){ \t // TODO自动生成方法存根 \t super.onCreate(savedInstanceState); \t setContentView(R.layout.main); \t \t \t setColor(Color.BLACK,Color.BLUE); \t \t \t } \t \t } – 2012-03-28 13:54:22

+0

但没有什么变化! – 2012-03-28 13:59:07

0
setColor(Color.Black,Color.Red) 

相当于的setColor(INT,INT)而 lv1.setBackgroundcolor() 需要适当地形成包装整数,由4个字节组成:α,红色,绿色,蓝色。

如果你尝试做

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

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

lv1.setBackgroundcolor(0xff0000ff). 

而且可以去除大量的冗余代码,不需要。

相关问题