1

これを実行すると、UI(2つの単純な画像とテキストの静的テキストフィールド)が5秒間待機してから、次のアクティビティ(いくつかのボタンがある別のページ)に進むことになっています。

画像を読み込んで先に進まないようにするか、空白のページを表示して5つ待ってから、先に進むことができます。

メインのJavaDoc:

package com.example.ccbc_maps;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity 
{

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //When I add a call to the main function here it just displays the white space
        //Then advances after five seconds same thing if I paste the code within
        //The main method.
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
     }

    public void main()
    {
        try 
        {
            Thread.sleep(5000);
        } 
        catch (InterruptedException e) 
        {

        }

        Intent goForward = new Intent(this, CampusSelect.class);
        startActivity(goForward);
    }
}

そして、これはそれが進むクラスです:

package com.example.ccbc_maps;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class CampusSelect extends Activity 
{

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_campus_select);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        getMenuInflater().inflate(R.menu.activity_campus_select, menu);
        return true;
    }
}

助けてくれてありがとう!

4

2 に答える 2

0

これは、アクティビティが表示されるのはonCreate()メソッドのみであるためです。

于 2012-11-15T20:10:16.713 に答える
0

メインスレッド(UIスレッド)を強制的にスリープさせているため、期待どおりに機能していません。

ビューのプロパティを呼び出しsetContentView()たり変更したりするなど、UIを変更しても、すぐには実行されません。代わりに、それらはメッセージキューに入れられ、後でメインスレッドによって実行されます。

実際には別のスレッドで待機する必要があります。おそらく、あなたがやろうとしていることを達成するための最も簡単な方法は、Handler.postDelayed()を使用して、後でメインスレッドで実行される作業をスケジュールすることです。

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.R.layout.activity_main);

    new Handler().postDelayed(new Runnable()
    {
        @Override
        public void run()
        {
            Intent goForward = new Intent(MainActivity.this, CampusSelect.class);
            startActivity(goForward);
        }
    }, 5000);
}
于 2012-11-15T20:12:19.987 に答える