0

メニューを作成し、[登録]をクリックすると、1行のテキストだけで新しいクラスを開きます。

アプリが開いて実行されますが、メニューの[登録]ボタンをクリックするとアプリがクラッシュします。コードエラーはありません。

私の問題がわかりますか?

public boolean onOptionsItemSelected(MenuItem item) {    
    // Handle item selection    
    switch (item.getItemId()) {        
    case R.id.register: 

        Intent intent = new Intent(MeorNot.this, AddMember.class);
        startActivity(intent);

        return true; 
    }
}

これは私が開こうとしている私の新しいクラスです

package com.meornotFinal;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;


public class AddMember extends Activity {

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("Add member");
        this.setContentView(textview);
    }
}
4

3 に答える 3

4

あなたの活動をチェックしてください

<activity android:name="AddMember.class"> in AndroidManifest.xml file. 

この行を追加するのを忘れています。したがって、この行をandroidmanifest.xmlファイルにも追加します。

于 2013-02-14T14:48:04.000 に答える
1

ViewsetContentView()代わりにを設定しようとしていますlayout

this.setContentView(textview);

この方法で行う場合は、次のようなプログラムでレイアウトを作成する必要があります。

RelativeLayout relativeLayout = new RelativeLayout(this);

次に、これにを追加TextViewして、でレイアウトを設定できますsetContentView()

この方法で行う必要がない限り、より簡単な方法は、おそらくxmlレイアウトを作成し、呼び出しTextViewた後にそこから取得することです。findViewById(R.id.textView1)setContentView(R.layout.your_layout_file);

Logcat

ログキャットをオンにするには、まだEclipseにない場合は、[ウィンドウ]->[ビューの表示]->[その他]->[Android]->[ログキャット]に移動します。

これにより、エラーやその他のデバッグ情報をログに記録するコンソールが提供されます。アプリがクラッシュすると、理由と、通常はクラッシュした行番号のJavaファイルが表示されます。その行の前にエラーが発生した場合は、さらに掘り下げる必要があるかもしれませんが、それはあなたに良い出発点を与えるでしょう。

例としては

Caused by: java.lang.NullPointerException
08-07 08:24:02.516: ERROR/AndroidRuntime(334):     at your_app.org.ThisActivity.onCreate(ThisActivity.java:26)   

ThisActivity次に、nullであるものの26行目を調べ始めることを知っています

于 2013-02-14T14:41:54.467 に答える
1

[登録]ボタンをクリックした後に呼び出すアクティビティの現在のコードブロック:

public class AddMember extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("Add member");
        this.setContentView(textview);

    }
}

this.setContentView(textview);を次のように変更する必要があります。

public class AddMember extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a_layout_in_your_layout_folder);

            // CAST YOUR TEXTVIEW HERE
    }
}

では、a_layout_in_your_layout_folder単一LinearLayoutを保持し、実行時に追加できますTextViewTextViewレイアウトXMLでaを宣言する方がはるかに簡単なオプションであるなど、そのようなことを行う意味はよくわかりません。

しかし、それぞれに私は思います。

于 2013-02-14T14:43:50.290 に答える