【发布时间】:2013-06-27 11:50:24
【问题描述】:
我有一个片段和一个活动。该活动使片段膨胀。片段的 xml 文件包含微调器的 @+id。
在活动的 onCreate 中,我试图从片段中获取微调器。
Spinner mySpinner = (Spinner)findViewById(R.id.mySpinner);
mySpinner 始终以 null 的形式返回。我绝对确定 ID 是正确的。
我该如何解决这个问题?
编辑: 以下是活动的完整 onCreate:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.newtimer);
myArray = this.getResources().getStringArray(R.array.myspinner);
db = new DBAdapter(this);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Bundle type = getIntent().getExtras();
String stringType = type.getString("type");
if (stringType.equals(A_STRING_HERE))
{
MyCustomFragment myFragment = new MyCustomFragment();
fragmentTransaction.replace(R.id.fragmentContainer, myFragment); // fragmentContainer is a FrameLayout that I use to swap with fragments
fragmentTransaction.commit();
fragmentManager.executePendingTransactions();
//TODO Load active timers
db.open();
Cursor myCursor = db.getEntry(0);
if(myCursor.moveToFirst())
{
String curr = myCursor.getString(2);
Spinner mySpinner = (Spinner)findViewById(R.id.myspinner;
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.myspinner,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
if (myspinnerr == null)
{
Log.d("NewTimerActivity", "spinner is null!");
}
myspinner.setAdapter(adapter);
int i = java.util.Arrays.asList(myArray).indexOf(curr);
myspinner.setSelection(i);
}
}
【问题讨论】:
-
您的
setContentView电话是否在引号上方? -
是的,我已经检查过了。我正在做的是将内容视图设置为包含 FrameLayout 的基本 LinearLayout xml 文件。然后将 FrameLayout 替换为来自另一个文件的片段(包含微调器的同一片段)。当然,所有这些都是在引用的行之前调用的。
标签: android android-activity null spinner fragment