-1

我想用一個意圖開始一個活動,但它似乎從來沒有工作。我已經試過在所有地方範圍內變量,它似乎從來沒有工作。我正在使用一個線程來啓動活動。如果是因爲IDE,我正在使用android studio。我只是想知道這裏的錯誤,因爲我找不到任何東西。我已經包含了Android清單,因爲我可能也會搞砸了。下面是代碼:Android意圖不工作

package com.mtprogramming.magicsquaresgame; 

import com.mtprogramming.magicsquaresgame.util.SystemUiHider; 
import android.annotation.TargetApi; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Build; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.MotionEvent; 
import android.view.View; 

/** 
* An example full-screen activity that shows and hides the system UI (i.e. 
* status bar and navigation/system bar) with user interaction. 
* 
* @see SystemUiHider 
*/ 
public class Opening extends Activity { 
/** 
* Whether or not the system UI should be auto-hidden after 
* {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds. 
*/ 
private static final boolean AUTO_HIDE = true; 


/** 
* If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after 
* user interaction before hiding the system UI. 
*/ 
private static final int AUTO_HIDE_DELAY_MILLIS = 3000; 

/** 
* If set, will toggle the system UI visibility upon interaction. Otherwise, 
* will show the system UI visibility upon interaction. 
*/ 
private static final boolean TOGGLE_ON_CLICK = true; 

/** 
* The flags to pass to {@link SystemUiHider#getInstance}. 
*/ 
private static final int HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION; 

/** 
* The instance of the {@link SystemUiHider} for this activity. 
*/ 
private SystemUiHider mSystemUiHider; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_opening); 
Thread timer = new Thread(){ 
    public void run(){ 
     try{ 
      sleep(5000); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     }finally{ 
      Intent open = new Intent(Opening.this,Menu.class); 
      startActivity(open); 
     } 
    } 
}; 
    timer.start(); 
    final View controlsView = findViewById(R.id.fullscreen_content_controls); 
    final View contentView = findViewById(R.id.fullscreen_content); 

    // Set up an instance of SystemUiHider to control the system UI for 
    // this activity. 
    mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS); 
    mSystemUiHider.setup(); 
    mSystemUiHider 
      .setOnVisibilityChangeListener(new SystemUiHider.OnVisibilityChangeListener() { 
       // Cached values. 
       int mControlsHeight; 
       int mShortAnimTime; 

       @Override 
       @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) 
       public void onVisibilityChange(boolean visible) { 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { 
         // If the ViewPropertyAnimator API is available 
         // (Honeycomb MR2 and later), use it to animate the 
         // in-layout UI controls at the bottom of the 
         // screen. 
         if (mControlsHeight == 0) { 
          mControlsHeight = controlsView.getHeight(); 
         } 
         if (mShortAnimTime == 0) { 
          mShortAnimTime = getResources().getInteger(
            android.R.integer.config_shortAnimTime); 
         } 
         controlsView.animate() 
           .translationY(visible ? 0 : mControlsHeight) 
           .setDuration(mShortAnimTime); 
        } else { 
         // If the ViewPropertyAnimator APIs aren't 
         // available, simply show or hide the in-layout UI 
         // controls. 
         controlsView.setVisibility(visible ? View.VISIBLE : View.GONE); 
        } 

        if (visible && AUTO_HIDE) { 
         // Schedule a hide(). 
         delayedHide(AUTO_HIDE_DELAY_MILLIS); 
        } 
       } 
      }); 

    // Set up the user interaction to manually show or hide the system UI. 
    contentView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (TOGGLE_ON_CLICK) { 
       mSystemUiHider.toggle(); 
      } else { 
       mSystemUiHider.show(); 
      } 
     } 
    }); 

    // Upon interacting with UI controls, delay any scheduled hide() 
    // operations to prevent the jarring behavior of controls going away 
    // while interacting with the UI. 

} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 

    // Trigger the initial hide() shortly after the activity has been 
    // created, to briefly hint to the user that UI controls 
    // are available. 
    delayedHide(100); 
} 


/** 
* Touch listener to use for in-layout UI controls to delay hiding the 
* system UI. This is to prevent the jarring behavior of controls going away 
* while interacting with activity UI. 
*/ 
View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     if (AUTO_HIDE) { 
      delayedHide(AUTO_HIDE_DELAY_MILLIS); 
     } 
     return false; 
    } 
}; 

Handler mHideHandler = new Handler(); 
Runnable mHideRunnable = new Runnable() { 
    @Override 
    public void run() { 
     mSystemUiHider.hide(); 
    } 
}; 

/** 
* Schedules a call to hide() in [delay] milliseconds, canceling any 
* previously scheduled calls. 
*/ 
private void delayedHide(int delayMillis) { 
    mHideHandler.removeCallbacks(mHideRunnable); 
    mHideHandler.postDelayed(mHideRunnable, delayMillis); 
}} 

和Android清單:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.mtprogramming.magicsquaresgame.Opening" 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:label="@string/app_name" 
     android:theme="@style/FullscreenTheme" 
     android:screenOrientation="landscape"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
      android:name="com.mtprogramming.magicsquaresgame.Menu" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/app_name" 
      android:theme="@style/FullscreenTheme" 
      android:screenOrientation="landscape" 
      > 
     <intent-filter> <action> android:name="com.mtprogramming.magicsquaresgame.MENU"</action> 

      </intent-filter> 


    </activity> 
</application> 

目標API是16-17的方式。

+0

這不是好辦法,開始活動。只是顯示你在哪裏得到問題 –

+0

請發佈您的錯誤logcat – CoronaPintu

回答

0

刪除這些以下行從finally塊 Intent open = new Intent(Opening.this,Menu.class); startActivity(open);

,並把這些線在某處外螺紋。您只能在後臺打開UI線程上的活動。

+0

如何你的答案不同於我.. –

0

夥計,你不能在一個線程內開始活動。你需要從UI線程開始你的活動。

我會推薦使用處理程序。我不喜歡循環類,但我只是簡單地從uiThread創建線程時傳遞了一個Handler對象。然後從線程發送消息到處理程序,並通過覆蓋處理程序中的handlemessage來執行相應的ui內容。所以我的建議是使用匿名innner類處理程序(在ui線程中),然後將其傳遞給可運行類。

0

擺脫該線程的東西,如果你只是想後,一些延遲只是使用View.postDelayed(可運行,延遲)方法

+0

我可以有一些這方面的新文件?我應該使用哪個Runnable? – Nebraska

+0

你應該使用一個新的Runnable,你可以在run方法中調用startActivity – pskink

+0

我可以舉個例子嗎? – Nebraska