2016-01-30 3 views
-2

Мой код является следующая:Почему ImageView не работает для меня? Android

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //landscape 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     setContentView(R.layout.activity_game); 

     //initialize arks 
     new Timer().schedule(new TimerTask() { 
      @Override 
      public void run() { 
       initializeArks(); 
      } 
     }, 2000); 
    } 

Ничего особенного там, вот идут initializeArks():

public void initializeArks(){ 
     iv= (ImageView) findViewById(R.id.imageView); 
     tw= (TypeWriter) findViewById(R.id.textView); 
CountDownTimer timer = new CountDownTimer(10, 1000) { 

      public void onTick(long millisUntilFinished) { 

      } 

      public void onFinish() { 
       iv.setImageResource(R.drawable.loading); 
      } 
     }.start(); 

    } 

Имейте в виду, что этот код является только для отладки, она не делает ничего конкретного , но поскольку я выяснил, что проблема связана с ImageView

Также у меня есть переменные, объявленные STATIC с целью использования их в моих других классах:

public static ImageView iv; 
    public static TypeWriter tw; 

Мой XML является одним из основных один:

<ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/imageView" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" /> 

Я был бы признателен, если бы кто-нибудь объяснил мне, почему это не работает или пришлет мне рабочий фрагмент кода для меня, чтобы использовать только для одной цели: отображение изображения ,

После того, как я установить приложение на свой телефон и открыть его я жду ровно 4 секунды (вот как много им задерживающие его YHE кода выше) и он просто падает

+0

Не делать статические переменные типов зрения, так как это может привести к утечкам памяти, потому просмотров содержать ссылку на ваш объект деятельности. –

+1

что вы хотите сделать на самом деле ??? –

+0

Что означает 'does not work'? Пожалуйста, разместите свой логарифм. –

ответ

0

Я не смог найти способ для того чтобы достигнуть что я хотел, поэтому я посмотрел в общую картину, и мой сценарий позволил мне не иметь ImageView. К счастью, изменение фона макета делает трюк для меня, и у него нет никаких негативных эффектов для моего проекта. Благодарим вас за потраченное время здесь

0

Я думаю, что вы должны выполнить линию

iv.setImageResource(R.drawable.loading); 

внутри UI thead. Look at this answer

0

Initialise ваш ImageView в onCreate() метод не initializeArks() метод И не объявлять их как статические, как выглядит следующим образом:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //landscape 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     setContentView(R.layout.activity_game); 

     iv= (ImageView) findViewById(R.id.imageView); //<==== initialise in onCreate 
     tw= (TypeWriter) findViewById(R.id.textView); 

     //initialize arks 
     new Timer().schedule(new TimerTask() { 
      @Override 
      public void run() { 
       initializeArks(); 
      } 
     }, 2000); 
    } 

И объявленная переменная, как

public ImageView iv; 
public TypeWriter tw; 
+0

Вы пробовали это? – Pankaj

0

Кажется, что вы не работаете на тему пользовательского интерфейса. Попробуйте запустить внутри нити, как это:

runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         initializeArks(); 
        } 
       }); 
Смежные вопросы