2013-04-18 77 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)

我在做同样的教程。我直接从教程中复制了代码并运行了应用程序(工作正常)。所以出发去检查差异,这是我发现的唯一一个。

希望它有帮助!

快乐编码!

相关问题