如何从父类开始活动?

时间:2016-12-14 12:54:52

标签: android android-activity

我对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);

'这个'需要被替换,但我无法弄明白。

提前致谢!

2 个答案:

答案 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

只是尝试使用spinnerValue传递活动

startActivity(festivalIntent);

更改为

更改此行act.startActivity(festivalIntent);