ورود

View Full Version : چگونه یک کانستراکتور را return کنیم؟



sina4everafter
چهارشنبه 01 مرداد 1393, 14:43 عصر
سلام. ممنون میشم اگر راهنماییم کنید.
این کد زیر و نگاه کنید.

کلاس دکمه:


import android.content.Context;
import android.util.DisplayMetrics;
import android.widget.Button;
import android.widget.LinearLayout;


public class Buttons {

Context context;
int px;
Button btn;
LinearLayout li;
String[] returnCatsArrayString;

public Buttons(Context contextButton){
System.out.println("Android");
this.context = contextButton;
returnCatsArrayString = new Category(contextButton).getAllCats();

//---for loop---
for (int i = 0; i < returnCatsArrayString.length; i++) {
li = (LinearLayout) new LinearLayout(context);
li.findViewById(R.id.li);
btn = new Button(context);
li.addView(btn);
btn.setId(i);
px = 12;
btn.setTextSize(px);
btn.setText(returnCatsArrayString[i]);
}

if (returnCatsArrayString.length == returnCatsArrayString.length) {

for (int i = 0; i < returnCatsArrayString.length; i++) {
btn.setId(i);
}
}
}


//---Convert Pixel to DIP---
public int PxToDp(){

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
px = (int) ((px / displayMetrics.density) + 0.5);
return px;
}

public Context getButton(){
return context;
}
}


و این هم کلاس اکتیویتی.:


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;


public class MainActivity extends Activity {

Context context;
int px;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);

//---Create instance from Category---
Context btn= new Buttons(this).getButton();

}
}


الان من نمی دونم که چه طوری باید کلاس دکمه ها رو داخل کلاس اصلی ران کنم. الان یه شی ساختم. کرش نمی کنه ولی دکمه ها ایجاد نمیشه.
ممنون اگر راهنماییم کنید.

shahin bahari
چهارشنبه 01 مرداد 1393, 15:37 عصر
داداش معلومه که چیزی رو نباید نشون بده. شما یه تعداد دکمه رو میسازی و توی یه layout میزاری. این layout هم واسه خودش تو حافظه مونده.
یه Linear layout توی فایل xml که layout اصلی هست قرار بدید. تو متد onCreate این layout رو پیدا کنید و بعد با یه حلقه for هر چند تا که لازمه دکمه بهش اضافه کنید.

poorman
چهارشنبه 01 مرداد 1393, 20:33 عصر
ساخت کلاستون فکر میکنم اشتباه باشه کلا

آموزش های مربوط به ساخت ویوی شخصی سازی شده رو مطالعه کنید

اگر فقط بخواین یک ویو مثل باتن داشته باشین باید کلاس از button ارث بری کنه

اگر بخواین مثلا چند تا ویو داشته باشید باید یک فایل XML بسازید و کلاس از LinearLyout یا RelativeLayout ارث بری کنه و توی کلاس اگر خواستید همون ویوهای داخل XML رو تغییر بدید، یا اینکه با کد به اون layout ویو اضافه کنید، چند تا آموزش ببینید متوجه میشید

#root#
چهارشنبه 01 مرداد 1393, 21:06 عصر
اشتباه شد :خجالت:

sina4everafter
چهارشنبه 01 مرداد 1393, 22:06 عصر
ممنون از راهنماییتون. الان تقریبا متوجه شدم.
در ضمن اون کدی هم دوستمون نوشته من می دونم اشتباه. ولی حدس زدم که شاید اینطوری جواب بده.ممنون. اگه سوالی داشتم توی همین تاپیک مطرح می کنم. ممنون از همه.