フラグメントとアクティビティがあります。アクティビティはフラグメントを膨張させます。フラグメントの 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);
}
}