如何解决Android Studio错误:无法找到符号方法启动

时间:2016-08-11 21:50:42

标签: android runnable cannot-find-symbol

我从其中一个模板创建了一个基本的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);
    }
 . . .

2 个答案:

答案 0 :(得分:3)

new Thread(new GetExample()).start();

答案 1 :(得分:1)

我总是使用run for runnables并启动线程。 你在上面的文档中有一个,它是新的Thread(new Runnable())。start(),方法start应用于线程,而不是runnable对象

所以你可以使用run(),或者你可以创建一个线程 - 新的Thread并将runnable对象放入其中,就像你在注释中放入的文档中的示例一样。然后调用start到线程,而不是runnable。