2015-11-04 47 views
0
public class MainActivity extends FragmentActivity implements CustomEmpDialogFragment.EmpDialogFragmentListener { 
private Fragment contentFragment; 
private EmpListFragment employeeListFragment; 
private EmpAddFragment employeeAddFragment; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    if (savedInstanceState != null) 
    { 
     if (savedInstanceState.containsKey("content")) 
     { 
      String content = savedInstanceState.getString("content"); 
      if (content.equals(EmpAddFragment.ARG_ITEM_ID)) 
      { 
       if (fragmentManager.findFragmentByTag(EmpAddFragment.ARG_ITEM_ID) != null) 
       { 
        setFragmentTitle(R.string.add_emp); 
        contentFragment = fragmentManager.findFragmentByTag(EmpAddFragment.ARG_ITEM_ID); 
       } 
      } 
     } 
     if (fragmentManager.findFragmentByTag(EmpListFragment.ARG_ITEM_ID) != null) 
     { 
      employeeListFragment = (EmpListFragment) fragmentManager.findFragmentByTag(EmpListFragment.ARG_ITEM_ID); 
      contentFragment = employeeListFragment; 
     } 
    } 
    else 
    { 
     employeeListFragment = new EmpListFragment(); 
     setFragmentTitle(R.string.app_name); 
     switchContent(employeeListFragment, EmpListFragment.ARG_ITEM_ID); 
    } 
} 
@Override 
protected void onSaveInstanceState(Bundle outState) 
{ 
    if (contentFragment instanceof EmpAddFragment) 
    { 
     outState.putString("content", EmpAddFragment.ARG_ITEM_ID); 
    } 
    else 
    { 
     outState.putString("content", EmpListFragment.ARG_ITEM_ID); 
    } 
    super.onSaveInstanceState(outState); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
     case R.id.action_add: 
      setFragmentTitle(R.string.add_emp); 
      employeeAddFragment = new EmpAddFragment(); 
      switchContent(employeeAddFragment, EmpAddFragment.ARG_ITEM_ID); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
public void switchContent(Fragment fragment, String tag) 
{ 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    while (fragmentManager.popBackStackImmediate()); 
    if (fragment != null) 
    { 
     FragmentTransaction transaction = fragmentManager.beginTransaction(); 
     transaction.replace(R.id.content_frame, fragment, tag); 

     if (!(fragment instanceof EmpListFragment)) 
     { 
      transaction.addToBackStack(tag); 
     } 
     transaction.commit(); 
     contentFragment = fragment; 
    } 
} 
protected void setFragmentTitle(int resourseId) 
{ 
    setTitle(resourseId); 
    getActionBar().setTitle(resourseId); 
} 
@Override 
public void onBackPressed() 
{ 
    FragmentManager fm = getSupportFragmentManager(); 
    if (fm.getBackStackEntryCount() > 0) 
    { 
     super.onBackPressed(); 
    } 
    else if (contentFragment instanceof EmpListFragment|| fm.getBackStackEntryCount() == 0) 
    { 
     onShowQuitDialog(); 
    } 
} 
public void onShowQuitDialog() 
{ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setCancelable(false); 
    builder.setMessage("Do You Want To Quit?"); 
    builder.setPositiveButton(android.R.string.yes,new DialogInterface.OnClickListener() 
    { 
     @Override 
     public void onClick(DialogInterface dialog, int id) 
     { 
      finish(); 
     } 
    }); 
    builder.setNegativeButton(android.R.string.no,new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int id) 
     { 
      dialog.cancel(); 
     } 
    }); 
    builder.create().show(); 
} 
@Override 
public void onFinishDialog() 
{ 
    if (employeeListFragment != null) 
    { 
     employeeListFragment.updateView(); 
    } 
}} 

我在这里创建具有CRUD操作的数据库, 而编写这些代码中发现了一些错误,让下面错误与创建DATABSE

Error:(35, 76) error: incompatible types: android.support.v4.app.Fragment cannot be converted to android.app.Fragment Error:(41, 91) error: incompatible types: Fragment cannot be converted to EmpListFragment Error:(91, 53) error: incompatible types: android.app.Fragment cannot be converted to android.support.v4.app.Fragment Error:Execution failed for task ':app:compileDebugJavaWithJavac'. Compilation failed; see the compiler error output for details.

+0

您是否导入了'android.support.v4.app.FragmentActivity' –

+0

根据您的Logcat输出,您的问题与数据库无关。 – Kai

回答

0

你的类Fragment从支持库混合起来来自标准sdk的Fragment类。 如果您想使用第一个,那么支持片段管理器将使用getSupportFragmentManager()。否则,使用片段管理器getFragmentManager()