2013-04-18 3 views
0

Привет, я новичок в android dev, следующий код дает ошибку 1) Метод onCreate (bundle) не определен для типа объекта 2) Метод onCreate (bundle) типа DisplayMessageActivity должен быть переопределен или реализован метод супертипа Я использую super.onCreate, но он дает мне эту ошибку?Метод onCreate (bundle) не определен для типа объекта

public class DisplayMessageActivity { 

     @SuppressLint("NewApi") 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

       // Get the message from the intent 
       Intent intent = getIntent(); 
       String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 

         // Create the text view 
       TextView textView = new TextView(null); 
       textView.setTextSize(40); 
       textView.setText(message); 

       // Set the text view as the activity layout 
       setContentView(textView); 

      // Make sure we're running on Honeycomb or higher to use ActionBar APIs 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
       // Show the Up button in the action bar. 
       ((Object) getActionBar()).setDisplayHomeAsUpEnabled(true); 
      } 
    } 
     private void setContentView(TextView textView) { 
      // TODO Auto-generated method stub 

     } 
     private Intent getIntent() { 
      // TODO Auto-generated method stub 
      return null; 
     } 
     private Object getActionBar() { 
      // TODO Auto-generated method stub 
      return null; 
     } 
     public boolean onOptionsItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 
      case android.R.id.home: 
       NavUtils.navigateUpFromSameTask(this); 
       return true; 
      } 
      return super.onOptionsItemSelected(item); 
     } 

    } 
+0

Я использую этот учебник http://developer.android.com/training/basics/firstapp/starting-activity.html –

+0

Возможный дубликат [Метод undefined error в действии Android] (http://stackoverflow.com/ вопросы/21067653/method-undefined-error-in-android-activity) – codeling

+0

@RandolphCarter Обычно новый вопрос должен быть помечен как дубликат старшего, а не наоборот. – laalto

ответ

4

Вы забыли продлить класс деятельности.

public class DisplayMessageActivity extends Activity 

Если вы хотите создать мероприятие, вы должны продлить действие как суперкласс. Чтобы узнать больше об основных функциях, см. doc здесь

+0

Правильное, но, может быть, небольшое объяснение поможет OP научиться и помочь себе в будущем – codeMagic

+0

@codeMagic ,, спасибо .. Можете ли вы предложить, какой будет лучший ответ на этот вопрос? отредактируйте свой вариант или опубликуйте новое, если возможно – stinepike

+0

Нет, я думаю, ваше редактирование сделало очень хорошую работу. Если вы не хотите расширять то, как OP создает метод, называемый 'getIntent()', который не кажется правильным, если я там что-то не пропустил.Я начал редактирование вашего ответа, но я понял, что это скорее расширенный ответ – codeMagic

0

@ Ответы StinePike устраняют вашу непосредственную проблему. Но вам также нужно прочитать около Intent s. Это, в основном, способ отправки сообщений. Это неявное действие в том смысле, что оно ничего не запускает, а говорит о том, что делать и как обрабатывать определенные данные. Я говорю это, потому что считаю, что вы введены в заблуждение тем, что у вас есть функция под названием getIntent(). Это не должно быть функцией в вашем классе, но это то, как вы получаете данные, если этот Activity запущен с Intent.

Допустим, вы начать Activity как:

Intent intent = new Intent(MyActivity.this, NextActivity.class); // MyActivity is the Activity you are currently in and NextActivity is the Activity you are starting 
intent.putExtra("people", "Fred"); // This isn't necessary but a way to pass data. I put "Fred" but this could be a String variable or something else 
startActivity(intent); 

В NextActivity вы могли бы сделать:

@Override 
public void onCreate(Bundle bundle) 
{ 
    Intent recIntent = getIntent(); // this gets the intent information sent from MyActivity 
    String data = recIntent.getStringExtra("people"); // data now equals the String Fred 
} 

нет необходимости для вас, чтобы создать функцию, называемую getIntent(), это родная функция. Поэтому, когда вы используете getIntent(), стоит проверить на null в случае, если этот Activity не был начат с Intent. Может быть, это пусковая установка Activity

+0

Моя проблема не решена, я fcaing ту же ошибку с помощью следующего кода. используя намерение таким же образом общественного класса DisplayMessageActivity { \t @SuppressLint ("NewApi") \t @Override защищен недействительным OnCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); // Получить сообщение от намерения Intent intent = getIntent(); String message = intent.getStringExtra (MainActivity.EXTRA_MESSAGE); –

+0

Если вы следовали совету StinePikes и расширенному мероприятию, вы не должны получать ту же самую ошибку, которую вы опубликовали – codeMagic

0

Изменение:protected void onCreate(Bundle savedInstanceState)

To:public void onCreate(Bundle savedInstanceState)

Я работал на том же учебнике. Я скопировал код из учебника напрямую и запустил приложение (которое сработало). Поэтому отправляйтесь проверять различия, и это единственный, который я нашел.

Надеюсь, это поможет!

Happy Coding !!

Смежные вопросы