2015-10-13 22 views
0

我將一個值傳遞給另一個類,我得到另一個類的值,但是當我使用該值時,它顯示我0傳遞給另一個類時缺少值 - Android - Java?

public class MaterialSpinner extends Spinner implements ValueAnimator.AnimatorUpdateListener { 

    public int widths; 

    public MaterialSpinner(Context context, int width) { 
     super(context); 
     this.widths = width; 
     // **HERE SHOW ME VALUE FOR EXAMPLE 596** 
     Log.i("LOG-1", String.valueOf(widths)); 
     init(context, null); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     //BUT HERE GET ME 0** 
     int startX = this.widths; 
     Log.i("LOG-2", String.valueOf(widths)); 
    } 
} 

我有其他的構造函數:

public MaterialSpinner(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    init(context, attrs); 
} 

public MaterialSpinner(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    init(context, attrs); 
} 

這裏是我的活動;我的值傳遞從這裏到MaterialSpinner類:

public class StartActivity extends AppCompatActivity { 

    Context context; 
    private ArrayAdapter<String> adapter; 
    int width; 
    int height; 
    MaterialSpinner spinner1; 

    private boolean shown = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_start); 
     context = this; 
     if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) { 
      Display display = getWindowManager().getDefaultDisplay(); 
      width = display.getWidth(); 
      height = display.getHeight(); 

     } 
     else { 
      Display display = getWindowManager().getDefaultDisplay(); 
      Point size = new Point(); 
      display.getSize(size); 
      width = size.x; 
      height = size.y; 
     } 
     new MaterialSpinner(context, width); 
     adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ITEMS); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     initSpinnerHintAndFloatingLabel(); 
    } 

    private void initSpinnerHintAndFloatingLabel() { 
     spinner1 = (MaterialSpinner) findViewById(R.id.spinner1); 
     spinner1.setAdapter(adapter); 
     spinner1.setPaddingSafe(0, 0, 0, 0); 
    } 
} 
+1

你有其他的構造?如果你輸出'startX'的值會怎麼樣? – Blackbelt

+0

你確定你不重寫其他地方的值嗎? – JohnnyAW

+0

顯示完整的代碼,這個小片段應該工作。錯誤必須在別的地方。 – StephaneM

回答

3

你創建了一個對象,你什麼都不做吧:

new MaterialSpinner(context,width); 

在這樣做的其他功能:

spinner1 = (MaterialSpinner) findViewById(R.id.spinner1); 

這會使activity_start佈局中的對象膨脹。該easies的方法是創建一個setWidth()功能,並調用它,你誇大了View

spinner1 = (MaterialSpinner) findViewById(R.id.spinner1); 
spinner1.setWidth(width); 

編輯後:和刪除new MaterialSpinner(context,width);,因爲它什麼也不做

+0

@ JohnnyAW。非常感謝你的幫助。 –