2014-03-18 31 views
0

我在一个名为“NavigationDrawer”的项目中使用了我的项目,并意识到考虑到这是一个应用程序,它不止有一个Nav Drawer,它应该被更改并重命名为相关内容。主类永远不会被调用

我试图导入项目,但它一直说没有找到源文件,所以我开始以旧式的方式来做(复制和粘贴所有内容,确保我更改了软件包名称等)。但是现在当我尝试运行该程序时,它说它无法找到MainActivity方法。它一直说“Class'MainActivity'从不使用”,没有它,我的程序就不会运行。

我在我的智慧结束在这里球员哈哈,我知道它可能是我没有编辑的文件之一,但如果你能指出我在正确的方向,这将是伟大的。

我的代码:

package com.example.ColeraineTown; 

imports.... 

public class MainActivity extends Activity { 
private DrawerLayout DrawerLayout; 
private ListView DrawerList; 
private ActionBarDrawerToggle DrawerToggle; 

private CharSequence DrawerTitle; 
private CharSequence Title; 
private String[] pageArray; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Title = DrawerTitle = getTitle(); 
    pageArray = getResources().getStringArray(R.array.pageArray); 
    DrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    DrawerList = (ListView) findViewById(R.id.left_drawer); 

    // set a custom shadow that overlays the main content when the drawer opens 
    DrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
    // set up the drawer's list view with items and click listener 
    DrawerList.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.drawer_list_item, pageArray)); 
    DrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

    // enable ActionBar app icon to behave as action to toggle nav drawer 
    getActionBar().setDisplayHomeAsUpEnabled(true); 
    getActionBar().setHomeButtonEnabled(true); 

    // ActionBarDrawerToggle ties together the the proper interactions 
    // between the sliding drawer and the action bar app icon 
    DrawerToggle = new ActionBarDrawerToggle(
      this,     /* host Activity */ 
      DrawerLayout,   /* DrawerLayout object */ 
      R.drawable.ic_drawer, /* nav drawer image to replace standard image in action bar */ 
      R.string.drawer_open, /* "open drawer" description for accessibility */ 
      R.string.drawer_close /* "close drawer" description for accessibility */ 
    ) { 
     public void onDrawerClosed(View view) { 
      getActionBar().setTitle(Title); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     public void onDrawerOpened(View drawerView) { 
      getActionBar().setTitle(DrawerTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 
    DrawerLayout.setDrawerListener(DrawerToggle); 

    if (savedInstanceState == null) { 
     selectItem(0); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

/* Called whenever we call invalidateOptionsMenu() */ 
@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    // If the nav drawer is open, hide action items related to the content view 
    boolean drawerOpen = DrawerLayout.isDrawerOpen(DrawerList); 
    menu.findItem(R.id.action_websearch).setVisible(!drawerOpen); 
    return super.onPrepareOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // The action bar home/up action should open or close the drawer. 
    // ActionBarDrawerToggle will take care of this. 
    if (DrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    // Handle action buttons 
    switch(item.getItemId()) { 
     case R.id.action_websearch: 
      // create intent to perform web search for this planet 
      Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); 
      intent.putExtra(SearchManager.QUERY, getActionBar().getTitle()); 
      // catch event that there's no activity to handle intent 
      if (intent.resolveActivity(getPackageManager()) != null) { 
       startActivity(intent); 
      } else { 
       Toast.makeText(this, R.string.app_not_available, Toast.LENGTH_LONG).show(); 
      } 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

/* The click listener for ListView in the navigation drawer */ 
private class DrawerItemClickListener implements ListView.OnItemClickListener { 
    @Override 
    public void onItemClick(AdapterView parent, View view, int position, long id) { 
     selectItem(position); 
    } 
} 

private void selectItem(int position) { 
    // update the main content by replacing fragments 
    Fragment fragment = new PageFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(PageFragment.ARG_PAGE_NUMBER, position); 
    fragment.setArguments(args); 



    FragmentManager fragmentManager = getFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 

    // update selected item and title, then close the drawer 
    DrawerList.setItemChecked(position, true); 
    setTitle(pageArray[position]); 
    DrawerLayout.closeDrawer(DrawerList); 
} 

@Override 
public void setTitle(CharSequence title) { 
    Title = title; 
    getActionBar().setTitle(Title); 
} 

/** 
* When using the ActionBarDrawerToggle, you must call it during 
* onPostCreate() and onConfigurationChanged()... 
*/ 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    // Sync the toggle state after onRestoreInstanceState has occurred. 
    DrawerToggle.syncState(); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    // Pass any configuration change to the drawer toggls 
    DrawerToggle.onConfigurationChanged(newConfig); 
} 

/** 
* Fragment that appears in the "content_frame", shows a planet 
*/ 
public static class PageFragment extends Fragment { 
    public static final String ARG_PAGE_NUMBER = "page_number"; 

    public PageFragment() { 
     // Empty constructor required for fragment subclasses 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_planet, container, false); 
     int pgNum = getArguments().getInt(ARG_PAGE_NUMBER); 
     String page = getResources().getStringArray(R.array.pageArray)[pgNum]; 

     int imageId = getResources().getIdentifier(page.toLowerCase(Locale.getDefault()), 
       "drawable", getActivity().getPackageName()); 
     ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId); 
     getActivity().setTitle(page); 
     return rootView; 
    } 
} 

}

+1

然后检查清单,如果你宣布活动作为启动 – Raghunandan

+0

你有没有考虑访问developer.android.com它会引导您完成每个步骤?从长远来看,它会更快。 – Simon

回答

0

你应该声明它在Android清单用于该项目。

<activity android:name="com.example.ColeraineTown.MainActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN"/> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

More docs

相关问题