1

私はアンドロイド ナビゲーション ドロワー ガイドに従っていましたが、リストの項目からアクティビティを開始しようとするまではすべてうまくいきました。最初の項目をクリックすると、作成したテスト トースト メッセージが実行されますが、2 番目の項目をクリックするとアプリがクラッシュするため、ドロワーは正常に動作しているようです。

誰でも問題が何であるか教えてもらえますか、誰かが私を正しい方向に向けてください..

これが私のメインアクティビティです:

public class MainActivity extends Activity {

private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;

private CharSequence mDrawerTitle;
private CharSequence mTitle;
private String[] mGalaxyTitles;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTitle = mDrawerTitle = getTitle();
    mGalaxyTitles = getResources().getStringArray(R.array.list_items);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.left_drawer);


    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.drawer_list_item, mGalaxyTitles));
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
    if (savedInstanceState == null) {
        selectItem(0);}

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);


    mDrawerToggle = new ActionBarDrawerToggle(
            this,                 
            mDrawerLayout,         
            R.drawable.ic_drawer,  
            R.string.hello_world,  
            R.string.hello_world  
            ) {
        public void onDrawerClosed(View view) {
            getActionBar().setTitle(mTitle);
            invalidateOptionsMenu(); 
        }

        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(mDrawerTitle);
            invalidateOptionsMenu(); 
        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);

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


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

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    return super.onOptionsItemSelected(item);}


private class DrawerItemClickListener implements ListView.OnItemClickListener {

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

  switch(position) {
    case 0:
        Toast.makeText(getApplicationContext(), "Some Activities MAY take time to load. Please be Patient.", Toast.LENGTH_LONG).show();   
        //Intent a = new Intent(MainActivity.this, Dev_team.class);
            //startActivity(a);
    break;
    case 1:
        Toast.makeText(getApplicationContext(), "Some Activities MAY take time to load. Please be Patient.", Toast.LENGTH_LONG).show(); 
        Intent a = new Intent(getBaseContext(), dev.class);
         startActivity(a);
           break;
    default:
    }
    }
    }


public void selectItem(int position) {
        switch(position) {
    case 0:
        Toast.makeText(getApplicationContext(), "Some Activities MAY take time to load. Please be Patient.", Toast.LENGTH_LONG).show();   
        //Intent a = new Intent(MainActivity.this, Dev_team.class);
            //startActivity(a);
    break;
    case 1:
        setContentView(R.layout.dev_team);
           break;
    default:
        }
    }


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



@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);

    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    mDrawerToggle.onConfigurationChanged(newConfig);
}


/**public static class GalaxyFragment extends Fragment {
    public static final String ARG_Galaxy_NUMBER = "Galaxy_number";

    public GalaxyFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_Galaxy, container, false);
        int i = getArguments().getInt(ARG_Galaxy_NUMBER);
        String Galaxy = getResources().getStringArray(R.array.list_items)[i];

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

そして、ここに activity_main.xml があります

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="30dp"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/hello_world"
    android:textSize="18sp" />
</RelativeLayout>
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp"
    android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

そして、ここに dev.java があります

public class dev extends MainActivity{
public void onCreate(Bundle savedInstanceState){
    setContentView(R.layout.dev_team);
}

}

Pavel Dudka が提案したように、ここに logcat があります

    06-25 12:05:12.815: E/Trace(778): error opening trace file: No such file or directory (2)
06-25 12:05:13.736: D/dalvikvm(778): GC_FOR_ALLOC freed 100K, 8% free 2668K/2888K, paused 174ms, total 182ms
06-25 12:05:13.746: I/dalvikvm-heap(778): Grow heap (frag case) to 3.792MB for 1127536-byte allocation
06-25 12:05:13.865: D/dalvikvm(778): GC_FOR_ALLOC freed 2K, 6% free 3767K/3992K, paused 120ms, total 120ms
06-25 12:05:13.925: D/dalvikvm(778): GC_CONCURRENT freed 1K, 5% free 3800K/3992K, paused 12ms+12ms, total 54ms
06-25 12:05:14.296: I/Choreographer(778): Skipped 33 frames!  The application may be doing too much work on its main thread.
06-25 12:05:14.366: D/gralloc_goldfish(778): Emulator without GPU emulation detected.
06-25 12:05:24.766: D/AndroidRuntime(778): Shutting down VM
06-25 12:05:24.766: W/dalvikvm(778): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
06-25 12:05:24.786: E/AndroidRuntime(778): FATAL EXCEPTION: main
06-25 12:05:24.786: E/AndroidRuntime(778): android.content.ActivityNotFoundException: Unable to find explicit activity class    {com.example.navdraw/com.example.navdraw.dev}; have you declared this activity in your AndroidManifest.xml?
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.app.Activity.startActivityForResult(Activity.java:3370)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.app.Activity.startActivityForResult(Activity.java:3331)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.app.Activity.startActivity(Activity.java:3566)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.app.Activity.startActivity(Activity.java:3534)
06-25 12:05:24.786: E/AndroidRuntime(778):  at com.example.navdraw.MainActivity$DrawerItemClickListener.onItemClick (MainActivity.java:129)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.widget.AdapterView.performItemClick(AdapterView.java:298)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:2749)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.widget.AbsListView$1.run(AbsListView.java:3423)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.os.Handler.handleCallback(Handler.java:725)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.os.Looper.loop(Looper.java:137)
06-25 12:05:24.786: E/AndroidRuntime(778):  at android.app.ActivityThread.main(ActivityThread.java:5041)
06-25 12:05:24.786: E/AndroidRuntime(778):  at java.lang.reflect.Method.invokeNative(Native Method)
06-25 12:05:24.786: E/AndroidRuntime(778):  at java.lang.reflect.Method.invoke(Method.java:511)
06-25 12:05:24.786: E/AndroidRuntime(778):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-25 12:05:24.786: E/AndroidRuntime(778):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-25 12:05:24.786: E/AndroidRuntime(778):  at dalvik.system.NativeStart.main(Native Method)

私が見逃している明らかなものがある場合は、私に教えてください。私はアプリ開発コミュニティにかなり慣れていないからです。

どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1

2

さて、logcat は、アクティビティ (起動しようとしているアクティビティ) をManifestファイルで宣言していないことを示しています。AndroidManifest.xmlAndroid アプリのすべてのアクティビティは、ファイルで宣言する必要があります

あなたがする必要があるのは、次のセクションをマニフェストに追加することです(applicationタグ内のどこかに):

<application ...>

    <activity
        android:name="com.example.navdraw.dev"
        android:label="label"/>

</application>

ここで見つけることができるマニフェスト ファイルの構造に関する詳細情報

于 2013-06-25T16:27:47.087 に答える