【问题标题】:How to resolve Android Studio error: Cannot find symbol method start如何解决 Android Studio 错误:找不到符号方法启动
【发布时间】:2016-08-11 21:50:41
【问题描述】:

我从其中一个模板创建了一个基本的 Android Studio 应用程序,并试图从 onCreate 中的预构建处理程序调用一个线程 (Runnable)。我所做的只是添加扩展 Runnable 的类,然后在处理程序中使用该类。无法弄清楚为什么会出现编译错误:

找不到符号方法开始

这是唯一的错误,就行了

new Thread(example.start());

代码是:

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {


    static class GetExample implements Runnable
    {
        public void run()
        {    
            Log.i("GetExample class", "Inside GetExample::run()");
            return;
        }
    }


    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view)
            {

                Log.i("Inside onCreate()", "TestBed -- onClick() invoked");

                try
                {
                    GetExample example = new GetExample();
                    new Thread(example.start());
                }
                catch (IOException ex)
                {
                    Log.i("Inside onCreate()", "TestBed -- IOException occurred");
                }
            }
        });

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }
 . . .

【问题讨论】:

  • Threads start(); Runnables run().
  • @Makoto -- Oracle 的这些文档有误吗?他们说使用 start()。 docs.oracle.com/javase/tutorial/essential/concurrency/…
  • 仔细看看你在哪里调用start()
  • @Makoto -- Arrgghhh。我看到了。您能添加一个答案,以便我将其标记为正确吗?
  • 目前还不是很清楚您需要Thread 来做什么,但我相信Android 的方式来做您想做的事情将是Handler

标签: android runnable cannot-find-symbol


【解决方案1】:
new Thread(new GetExample()).start();

【讨论】:

    【解决方案2】:

    我一直将 run 用于可运行对象,将 start 用于线程。 您在上面放置的文档中有一个,它是 new Thread ( new Runnable()).start() ,方法 start 应用于线程,而不是可运行对象

    因此,您可以使用 run(),也可以创建一个线程 - 新线程并将可运行对象放入其中,就像您放入 cmets 的文档中的示例一样。然后调用 start 到线程,而不是 runnable。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 2018-06-23
      • 2015-04-28
      相关资源
      最近更新 更多