2012-03-28 153 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). 

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

相關問題