0

このエラーを理解するのに苦労しています。Main_Activitie オプション メニューで開始する inent があります。
LogCat で次のエラーが発生しています: 07-07 20:09:40.317: E/AndroidRuntime(2803): FATAL EXCEPTION: main 07-07 20:09:40.317: E/AndroidRuntime(2803): java.lang.RuntimeException : アクティビティをインスタンス化できません ComponentInfo{com.TS.3000/com.TS.3000.AddRestaurantActivity}:java.lang.NullPointerException
デバッグすると、NPE が存在し、ソースが見つからないというウィンドウが表示されます。新しいソース フォルダーを追加しようとしましたが、エラーで変更されませんでした。インテントを呼び出している私の主なアクティビティのセクションは次のとおりです。

public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.add, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // this handles when user selects add button
    Intent addRestaurant = new Intent(MainActivity.this,
            AddRestaurantActivity.class);
    Log.i("First", "Log.v");
    startActivity(addRestaurant);
    Log.i("Second", "Log.v");
    return super.onOptionsItemSelected(item);
}

** * ** AddRestaurantActivity * ** * **呼び出される 2 番目のアクティビティ

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_restaurant);
    Log.i("fourth", "Log.v");
    restName = (EditText) findViewById(R.id.edtT_rest_name);
    restStreet = (EditText) findViewById(R.id.edtT_restaurant_street_address);
    restCity = (EditText) findViewById(R.id.edtT_restaurant_city_address);
    phoneNumber = (EditText) findViewById(R.id.edtT_restaurant_phone);

    Button saveRestaurant = (Button) findViewById(R.id.btn_saveRestaurant);
    saveRestaurant.setOnClickListener(saveRestaurantButtonClicked);
}

OnClickListener saveRestaurantButtonClicked = new OnClickListener() {
    String restaurantName = restName.getText().toString();
    @Override
    public void onClick(View v) {
    if (restName.getText().length() != 0) {
            Intent intent = new Intent(AddRestaurantActivity.this,
                    MainActivity.class);
            intent.putExtra("restName", restaurantName);
            startActivity(intent);
        Log.i("fifth", "Log.v");
        } else {
            AlertDialog.Builder builder = new AlertDialog.Builder(
                    AddRestaurantActivity.this);

            builder.setTitle(R.string.errorTitle);
            builder.setMessage(R.string.errorMessage);
            builder.setPositiveButton(R.string.errorButton, null);
            builder.show();
        }
    }
};

インテントを追加した XML は次のとおりです。

<activity
    android:name=".AddRestaurantActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <action android:name="android.intent.action.DEFAULT" />
    </intent-filter>
</activity>

OnClickListner をコメントアウトすると、MainActivity から AddRestaurantActivity へのインテントが正常に動作します。

問題が AddRestaurantActivity のマニフェストで自分の意図を宣言しているのか、それとも android.jar にソースを追加する必要があるのか​​ わかりません。私はアンドロイドが初めてで、この問題のデバッグは困難です。ありがとう

4

1 に答える 1

0

Main Activity と AddRestaurantActivity は同じパッケージに含まれていますか? android:name=".AddRestaurantActivity" を android:name="com.myapplication.activity.AddRestaurantActivity" のような完全なパッケージ名に変更してみてください。

于 2013-07-07T21:02:28.500 に答える