2013-04-18 59 views
0

您好我是android dev的新手,下面的代碼給出了錯誤 1)方法onCreate(bundle)未定義爲對象類型 2)方法onCreate捆綁)類型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

[Android Activity中的方法未定義錯誤]的可能重複(http://stackoverflow.com/ question/21067653/method-undefined-error-in-android-activity) – codeling

+0

@RandolphCarter通常,新問題應該被標記爲舊的而不是其他方式的副本。 – laalto

回答

4

您忘記了擴展Activity類。

public class DisplayMessageActivity extends Activity 

如果您想創建一個Activity,那麼您必須將Activity擴展爲超類。要了解更多關於活動的基本信息,請參閱doc這裏

+0

正確,但也許有一點解釋會幫助OP在未來學習和幫助自己 – codeMagic

+0

@codeMagic,謝謝..你能提出什麼是這類問題的最佳答案嗎?如果可能,請編輯我的一個或發佈新的 – stinepike

+0

不,我認爲你的編輯做得很好。除非你想擴展OP如何創建一個名爲'getIntent()'的方法,這看起來不正確,除非我錯過了那裏的東西。我開始編輯你的答案,但我意識到這是更多的擴展答案 – codeMagic

0

@ StinePike的答案解決了您的直接問題。但你也需要閱讀關於Intent s。這些基本上只是一種發送消息的方式。這是一個隱含的行爲,因爲它不會啓動某些內容,而是告訴某事要做什麼以及如何處理某些數據。我這樣說是因爲我相信你被誤導了,因爲你有一個叫做getIntent()的函數。這不需要是您班級的功能,但這是您如何在ActivityIntent開始時接收數據的方式。

假設你開始一個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()時,最好在Activity沒有以Intent開頭的情況下檢查null。也許是因爲發射Activity

+0

我的問題沒有解決,我用下面的代碼發現同樣的錯誤。使用意圖以相同的方式 公共類DisplayMessageActivity { \t @SuppressLint( 「NewApi」) \t @Override 保護無效的onCreate(捆綁savedInstanceState){ super.onCreate(savedInstanceState); //從意圖獲取消息 Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); –

+0

如果您遵循StinePikes建議和擴展活動,那麼您不應該得到與您發佈相同的錯誤 – codeMagic

0

變化:protected void onCreate(Bundle savedInstanceState)

要:public void onCreate(Bundle savedInstanceState)

我在做同樣的教程。我直接從教程中複製了代碼並運行了應用程序(工作正常)。所以出發去檢查差異,這是我發現的唯一一個。

希望它有幫助!

快樂編碼!

相關問題