2014-07-14 92 views
0

我不知道如何去声明我的子类Timertimer1实例。我被告知我需要初始化实例,但如果timer1是一个类实例而不是原始类型,我该怎么做?这里是我的代码:关于类实例的初始化

package com.example.derpphone; 



import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetSocketAddress; 
import java.net.SocketAddress; 
import java.net.SocketException; 
import java.util.TimerTask; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 



public class MainActivity extends Activity implements OnClickListener{ 

public class Timer extends TimerTask { 


DatagramSocket socket; 

public Timer() throws SocketException { 
    this.socket = new DatagramSocket(); 
} 

    @Override 
    public void run() {  
     while (true){ 
       if (socket != null) { 
            byte[] bytes = new byte[100]; 
        SocketAddress serverAddress = new InetSocketAddress("131.179.176.74", 9998); 
        try { 
         DatagramPacket packet = new DatagramPacket(bytes, 
           bytes.length, serverAddress); 
         socket.send(packet);      

        } catch (Exception e) { 

        } 
       } 
      } 
} 
} 
    Timer timer1; 
public MainActivity() throws SocketException{ 
timer1 = new Timer(); 
    } 

String error = "error"; 

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



    View callButton = findViewById(R.id.btnCall); 

    callButton.setOnClickListener(this); 
    ; 
} 



private void phoneCall() 
{ 
    String phoneCallUri = "tel://myPhoneNumber"; 
    Intent phoneCallIntent = new Intent(Intent.ACTION_CALL); 
    phoneCallIntent.setData(Uri.parse(phoneCallUri)); 
    startActivity(phoneCallIntent); 
} 
@Override 
public void onClick(View view) { 
     switch(view.getId()) 
     { 
     case R.id.btnCall: 
      timer1.run(); 
      phoneCall(); 
     break; 

     case R.id.end: 
      timer1.cancel(); 
      break; 

     default: 
      System.out.println(error); 
     break; 
     } 
     } 
} 
+0

如果timer1不是一个变量,那么它还能是什么? – AmmarCSE

+0

它是一个子类的实例。 – user3827226

+0

我被告知添加子类是处理它的最好方法。 – user3827226

回答

0

只要对象Timer不是1)抽象或2)的枚举,你应该使用Timer timer1 = new Timer();

0

定时器定时器1 =新的Timer();

如果你想创建MainActivity类别之外的实例,然后使用:

MainActivity.Timer定时器1 = MainActivity.Timer();