0

テンプレートの 1 つから基本的な 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);
    }
 . . .
4

2 に答える 2

3
new Thread(new GetExample()).start();
于 2016-08-11T21:58:40.453 に答える
1

私はいつも runnables に run を使用し、threads に start を使用してきました。上記のドキュメントにあるものは、 new Thread ( new Runnable()).start() です。メソッド start は、実行可能なオブジェクトではなく、スレッドに適用されます

したがって、run() を使用するか、スレッドを作成することができます - 新しいスレッドを作成し、コメントに入れたドキュメントの例のように、実行可能なオブジェクトを内部に配置します。次に、ランナブルではなく、スレッドに対して start を呼び出します。

于 2016-08-11T22:01:03.927 に答える