PDA

View Full Version : مشکل در findViewById



sara62
سه شنبه 12 آذر 1392, 23:13 عصر
سلام
یه اکتیویتی اضافه کردم و توش یه کلید دارم اما با اجرای خط زیر
Button bt=(Button) findViewById(R.id.button1);
bt رو null برمیگرده اما دلیلشو نمیدونم
انگار توی R ذخیره نمیشه نمیدونم.
لطف میکنید راهنماییم کنید
متشکرم

unit001
سه شنبه 12 آذر 1392, 23:17 عصر
سلام
چک کنید که فایل Xml ای که داخل فایل جاوا معرفی می کنید هماهنگ باشه.
اگر مشکتون حل نشد قسمتی از کدتون رو این جا بزارید یا متن خطا رو کپی کنید.

sara62
سه شنبه 12 آذر 1392, 23:37 عصر
113463منظورتون رو متوجه نشدم
یعنی چظوری؟با چی هماهنگ باشه؟
همه پروژه که حجمش زیاد بود فقط هموم اکتیویتی که مشکل داره رو آپلود کردم
متشکرم

rubiks.kde
چهارشنبه 13 آذر 1392, 01:39 صبح
سلام
یه اکتیویتی اضافه کردم و توش یه کلید دارم اما با اجرای خط زیر
Button bt=(Button) findViewById(R.id.button1);
bt رو null برمیگرده اما دلیلشو نمیدونم
انگار توی R ذخیره نمیشه نمیدونم.
لطف میکنید راهنماییم کنید
متشکرم

با توجه به کدی که گذاشتید دلیل کاملا مشخصه.دلیلشم اینه که این button توی fragment_fontactivity است در حالی که شما دارید با استفاده از Button bt=(Button) findViewById(R.id.kkk); دارید توی activity_fontactivity دنبالش میگردید نوشتن تابع cact به اون صورت اشتباه چون button مورد نظر داخل fragment_fontactivity است شما برای دسترسی به اشیا داخل اون باید بعد از inflate کردن اون لایه بیایید و به این صورت استفاده کنید Button bt=(Button) rootView.findViewById(R.id.kkk);.

البته شما باید چیزهایی که داخل تابع cact نوشتید رو به داخل onCreateView منتقل کنید.

یا مثلا کدتون رو به این صورت تغییر بدید.

public class FontActivity extends ActionBarActivity {



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



if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.font, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case R.id.action_settings:
return true;
}
return super.onOptionsItemSelected(item);
}

/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_fontactivity, container, false);
cact(rootView);
return rootView;
}

}

private void cact(View rootView)
{
Button bt=(Button) rootView.findViewById(R.id.kkk);
Toast.makeText(getApplicationContext(),bt.getText( ),Toast.LENGTH_SHORT);
}
}