我对Android和Stack Overflow很新,所以如果我错过了什么就很抱歉。
所以我正在开发我的第一个应用程序。它需要一个微调器作为菜单,这会打开不同的活动。我没有为每个人做这个,而是创建了一个名为baseActivity的类,它被所有其他类扩展。但是,我似乎无法弄清楚要使用什么作为意图的上下文,因为我希望这是一个从子类传递下来的变量,这样就不必为每个页面都有一个函数
这是我目前的主要活动:
public class MainActivity extends baseActivity implements AdapterView.OnItemSelectedListener {
private Spinner menuSpinner;
private static final String[]menuItems = {"Home", "Festival", "item 3"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
menuSpinner = (Spinner)findViewById(R.id.menuSpinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,menuItems);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
menuSpinner.setAdapter(adapter);
menuSpinner.setOnItemSelectedListener(this);
}
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String spinnerValue = menuSpinner.getSelectedItem().toString();
baseActivity loadActivity = new baseActivity();
loadActivity.switchMenuValue(spinnerValue);
}
public void onNothingSelected(AdapterView<?> arg0) {
}
这是baseActivity:
public class baseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//Switch through all available pages, then make a intent to load the right one
public void switchMenuValue (String spinnerValue) {
switch(spinnerValue) {
case "Home":
//Intent homeIntent = new Intent(this, MainActivity.class);
//startActivity(homeIntent);
Log.d("CASE", "Home");
break;
case "Festival":
Intent festivalIntent = new Intent(this, Festival.class);
startActivity(festivalIntent);
Log.d("CASE", "Festival");
break;
}
}
所以关于这一部分:
Intent festivalIntent = new Intent(this, Festival.class);
startActivity(festivalIntent);
'这个'需要被替换,但我无法弄明白。
提前致谢!
答案 0 :(得分:1)
您可以将一个Activity用作BaseActivity,并且可以使用Fragments而不是使用多个Activity。
您可以使用以下代码来使用片段
public void changeFragment(Fragment nextFragment, boolean addToBackstack) { int containerId = R.id.content_frame; FragmentManager fragmentManager = getSupportFragmentManager(); final FragmentTransaction transaction = fragmentManager .beginTransaction(); transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left); if (fragmentManager.findFragmentById(containerId) != null) { fragmentName = fragmentManager.findFragmentById(containerId); } transaction.replace(containerId, nextFragment); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); if (addToBackstack == true) { transaction.addToBackStack(fragmentName.getClass().getName()); } currentFragment = nextFragment.getClass().toString(); transaction.commit(); }
快乐编码..
答案 1 :(得分:0)
ServerAlias *.developer.app
startActivity(festivalIntent);
更改为
更改此行act.startActivity(festivalIntent);