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);
}
}
但是当我运行它时,布局中没有任何改变,如何使其工作?
答案 0 :(得分:3)
您已在lv1
中重新声明lv2
和ColorActivity
。 setColor()
方法设置超类中对象的颜色。
因此,删除lv1
中lv2
和ColorActivity
的声明可以解决您的问题。
顺便说一下:
为什么您的两个onCreate()
方法完全相同。在您的超级课程中,您分配的是lv1
和lv2
,但您要在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).
此外,您可以删除大量不需要的冗余代码。