فراخوانی کلاس در اکتیویتی
سلام دوستان ممنون میشم لطف کنید یه راهنمایی کنید
من یک فرم را درست کردم بعد میخام در mainactivity کلاس آن فرم را صدا بزنم ولی داده داخل کلا س ننمیاد وارور میده
mainactivitiy
public class MainActivity extends AppCompatActivity {
TextView tv;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
در این قسمت فراخوانی کردم Form_test form = new Form_test(this, R.id.layout_form_info);
file form_test
public class form_test implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
private Activity activity;
private LinearLayout layoutForminfo;
private EditText inputName;
private EditText inputEmail;
private EditText inputphone;
private CheckBox cbSharephone;
private Button btnsubmit;
public form_test(Activity activity,int layoutid){
this.activity = activity;
اطلاعات فرم وارد این قسمت نمیشه layoutForminfo = activity.findViewById(layoutid);
init();
}
نقل قول: فراخوانی کلاس در اکتیویتی
نقل قول:
نوشته شده توسط
bijar985
سلام دوستان ممنون میشم لطف کنید یه راهنمایی کنید
من یک فرم را درست کردم بعد میخام در mainactivity کلاس آن فرم را صدا بزنم ولی داده داخل کلا س ننمیاد وارور میده
mainactivitiy
public class MainActivity extends AppCompatActivity {
TextView tv;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
در این قسمت فراخوانی کردم Form_test form = new Form_test(this, R.id.layout_form_info);
file form_test
public class form_test implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
private Activity activity;
private LinearLayout layoutForminfo;
private EditText inputName;
private EditText inputEmail;
private EditText inputphone;
private CheckBox cbSharephone;
private Button btnsubmit;
public form_test(Activity activity,int layoutid){
this.activity = activity;
اطلاعات فرم وارد این قسمت نمیشه layoutForminfo = activity.findViewById(layoutid);
init();
}
اگر پیغام خطا را پست میکردید بهتر بود!
ولی در هر حال نباید مشکلی باشه وقتی دارید اکتیویتی را از طریق DI تزریق میکنید باید به راحتی به همه لایه هایی که در setContentView اکتیویتی کلاس اصلی مشخص کردید باید در کلاسی هم که در ترکیب شرکت داره دسترسی داشته باشه مگر اینکه نوع R.id.layout_form_info که دارید ارسال میکنید از نوع LinearLayout نباشه یعنی باید در لایه اصلیR.layout.activity_main هم نوعش LinearLayout باشه!
والبته اون متد init() هم چون پیاده سازیش را نذاشتید نمی دونم ایراد داره یا خیر!
نقل قول: فراخوانی کلاس در اکتیویتی
نقل قول:
نوشته شده توسط
farhad_shiri_ex
اگر پیغام خطا را پست میکردید بهتر بود!
ولی در هر حال نباید مشکلی باشه وقتی دارید اکتیویتی را از طریق DI تزریق میکنید باید به راحتی به همه لایه هایی که در setContentView اکتیویتی کلاس اصلی مشخص کردید باید در کلاسی هم که در ترکیب شرکت داره دسترسی داشته باشه مگر اینکه نوع R.id.layout_form_info که دارید ارسال میکنید از نوع LinearLayout نباشه یعنی باید در لایه اصلیR.layout.activity_main هم نوعش LinearLayout باشه!
والبته اون متد init() هم چون پیاده سازیش را نذاشتید نمی دونم ایراد داره یا خیر!
سلام از توجهتون ممنونم
اینمerror
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.payam.fristproject/com.example.payam.fristproject.MainActivity}: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.LinearLayout
Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.LinearLayout
at com.example.payam.fristproject.form_test.<init>(fo rm_test.java:22)
at com.example.payam.fristproject.MainActivity.onCrea te(MainActivity.java:28)
تابع init()
private void init() {
if(LayoutFormInfo == null){
return;
}
inputName = (EditText) LayoutFormInfo.findViewById(R.id.input_name);
inputEmail = (EditText) LayoutFormInfo.findViewById(R.id.input_email);
inputphone = (EditText) LayoutFormInfo.findViewById(R.id.input_phone1);
cbshare = (CheckBox)LayoutFormInfo.findViewById(R.id.checkBox1);
btnSubmit =(Button) LayoutFormInfo.findViewById(R.id.submit);
btnSubmit.setOnClickListener(this);
cbshare.setOnCheckedChangeListener(this);
}
نقل قول: فراخوانی کلاس در اکتیویتی
نقل قول:
android.widget.RelativeLayout cannot be cast to android.widget.LinearLayout
در پست قبلی هم که عرض کردم دارید یک layout که از نوع LinearLayout هست را فراخوانی میکنید در صورتی که در لایه اصلی فرم نوع R.id.layout_form_info این کنترل RelativeLayout هست نوع ها را یکی کنید مشکل رفع میشه!