2016-08-09 2 views
-1

После появления заставки отображается следующая ошибка. Как это решить?Второе действие не запускается после заставки

отображается это сообщение об ошибке после завершения заданного времени в потоке в SplashScr.java

enter image description here

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.lalinda.splashscreen"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".SplashScr" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".Splash"/> 
    </application> 

</manifest> 

SplashScr.java

package com.example.lalinda.splashscreen; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 

/** 
* Created by Lalinda on 8/7/2016. 
*/ 
public class SplashScr extends AppCompatActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash_screen); 

     Thread myThread = new Thread() 
     { 
      @Override 
      public void run() 
      { 
       try { 
        sleep(10000); 
        Intent startMainScreen = new Intent(getApplicationContext(), Splash.class); 
        startActivity(startMainScreen); 
        finish(); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     }; 
     myThread.start(); 
    } 
} 

Splash.java: Это второе действие

package com.example.lalinda.splashscreen; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 

public class Splash extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splash); 
     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) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     });*/ 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_splash, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

Edit: LogCat

java.lang.RuntimeException: Невозможно запустить активность ComponentInfo {com.example.lalinda.splashscreen /com.example.lalinda.splashscreen.Splash}: java.lang.IllegalStateException: эта активность уже имеет панель действий, предоставляемую декором окна. Не запрашивайте Window.FEATURE_SUPPORT_ACTION_BAR и установите для windowActionBar значение false в вашей теме, чтобы вместо этого использовать панель инструментов.

+0

Возможный дубликат [К сожалению, MyApp остановлен. Как я могу это решить?] (Http://stackoverflow.com/questions/23353173/unemale-myapp-has-stopped-how-can-i-solve-this) – Selvin

+1

Локальный код был бы намного полезнее – Shaishav

+0

Держу пари на вызывая 'startActivity()' или 'finish()' on non UI thread ... или NPE в 'Splash.onCreate' – Selvin

ответ

1

Перед установкой панели инструментов вам необходимо удалить ActionBar. Установите приложение тему что-то вроде:

<style name="AppTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:windowActionBar">false</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 

Как @Habel Филипп отметил в своем комментарии выше, используйте обработчик, чтобы показать экран выплеска в течение ограниченного времени. Фактически, я бы предложил против использования экрана Splash в первую очередь. Это рекомендуемый образец сейчас (Launch Screen Pattern): https://www.bignerdranch.com/blog/splash-screens-the-right-way/

+0

* Перед настройкой панели инструментов вам нужно удалить ActionBar * ... какой a bs ... 1. он использует AppCompat так, чтобы получить стиль из '@android: style/Theme.Holo.Light' явно не поможет ... 2. он использует' setSupportActionBar', а затем, очевидно, выводит тему из '@android: style/Theme.Holo.Light' вызовет еще одну проблему .. . ** очевидно, использование 'setSupportActionBar' с темой« NoActionBar »является взаимоисключающим ** – Selvin

+0

@Selvin Chill ... 1. Я не дал ему код дополнения ... вот почему мой текст читает. Задайте свою тему приложения ** что-то вроде **, я дал ему указание .. 2. Даже сообщение об ошибке читает «...установите windowActionBar на false в вашей теме, чтобы вместо этого использовать панель инструментов. "... 3 Я не понимаю, в чем проблема с установкой' android: windowActionBar' false и одновременным вызовом 'setSupportActionBar()'. – Shaishav

+0

И я не понимаю, почему коснуться 'android: windowActionBar', в то время как ошибка говорит о' windowActionBar' (да, это разница - тот, у кого нет пространства имен, поступает из библиотеки appcompat), что делает ваш «ответ» бесполезным – Selvin

Смежные вопросы