2015-05-18 36 views
1

我開始試圖學習MoodScanner應用程序。我收到與Handler對象有關的錯誤。我已經進口,但它仍然不是承認postDelayed方法,它是說postdelayed方法不識別

cannot resolve symbol postDelayed 

Unexepected token.. 

這裏是代碼

package com.example.manju.moodscanner; 

import android.graphics.drawable.AnimationDrawable; 

import android.support.v7.app.ActionBarActivity; 

import android.os.*; 

import android.os.Bundle; 

import android.os.Handler; 

import android.view.Menu; 

import android.view.MenuItem; 

import android.view.View; 

import android.widget.ImageView; 

import android.widget.TextView; 

import android.widget.Toast; 

public class MainActivity extends ActionBarActivity { 

private TextView result; 
private ImageView thumbPrint; 
private Runnable mRunnable; 
private AnimationDrawable thumbAnimation; 
private String[] moodResults; 

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

    moodResults= new String[] { 
      "Someone is cranky!", 
      "You are my sunshine!", 
      "No Comments...", 
      "You're stressed out!", 
      "Happy camper", 
      "Not your day!", 
      "Smile- its good for you.", 
      "In the clouds...", 
      "Pensive", 
      "Sad!", 
      "Excited!" 
    }; 

    thumbPrint= (ImageView) findViewById(R.id.thumbPrint); 
    thumbPrint.setBackgroundResource(R.drawable.thumb_animation); 
    thumbAnimation=(AnimationDrawable) thumbPrint.getBackground(); 

    result= (TextView) findViewById(R.id.resultText); 

    thumbPrint.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      showResult(); 
      //Toast.makeText(getApplicationContext(),"Helloo hru!",Toast.LENGTH_LONG).show(); 
      return true; 
     } 
    }); 
} 

public void showResult(){ 
    mRunnable=new Runnable() { 
     @Override 
     public void run() { 
      int rand= (int) (Math.random()* moodResults.length); 
      result.setText(moodResults[rand]); 
     } 
    }; 
} 
Handler mHandler= new Handler(); 
mHandler.postDelayed(mRunnable, 5000) 
} 
+0

'mHandler.postDelayed(mRunnable,5000)'使用v PARAM每個視圖處理程序 - 這不能放在類機構,你必須把它的方法內 – marcinj

+0

謝謝....用它做了! –

回答

0

的處理器需要是showResult()方法中,或者您需要在調用showResult()之後調用它,因爲mRunnable不存在,因爲它具有它。

+0

謝謝..完成! –

0

嘗試使用在onLongClick

//.... 
thumbPrint.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     v.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       int rand= (int) (Math.random()* moodResults.length); 
       result.setText(moodResults[rand]); 
      } 
     }, 5000); 
     // also use the context from v, not application 
     //Toast.makeText(v.getContext(),"Helloo hru!",Toast.LENGTH_LONG).show(); 
     return true; 
    } 
});