2014-02-15 49 views
0

我想知道如何將一個變量從private void傳遞給OnCreate?從public void傳遞一個變量OnCreate

public final Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     switch (msg.what) { 
     case MESSAGE_STATE_CHANGE: 
      if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1); 
      switch (msg.arg1) { 
      case BluetoothChatService.STATE_CONNECTED: 
       setStatus(getString(R.string.title_connected_to, mConnectedDeviceName)); 
       mConversationArrayAdapter.clear(); 
       break; 
      case BluetoothChatService.STATE_CONNECTING: 
       setStatus(R.string.title_connecting); 
       break; 
      case BluetoothChatService.STATE_LISTEN: 
      case BluetoothChatService.STATE_NONE: 
       setStatus(R.string.title_not_connected); 
       break; 
      } 
      break; 
     case MESSAGE_WRITE: 
      byte[] writeBuf = (byte[]) msg.obj; 
      // construct a string from the buffer 
      String writeMessage = new String(writeBuf); 
      mConversationArrayAdapter.add("Me: " + writeMessage); 
      break; 
     case MESSAGE_READ: 
      byte[] readBuf = (byte[]) msg.obj; 
      // construct a string from the valid bytes in the buffer 
      String readMessage = new String(readBuf, 0, msg.arg1); 

      int k=Integer.parseInt(readMessage.replaceAll("[\\D]","")); 
      mConversationArrayAdapter.add(readMessage); 
      Toast.makeText(getApplicationContext(),"ciao"+k ,Toast.LENGTH_SHORT).show(); 

      break; 
     case MESSAGE_DEVICE_NAME: 
      // save the connected device's name 
      mConnectedDeviceName = msg.getData().getString(DEVICE_NAME); 
      Toast.makeText(getApplicationContext(), "Connected to " 
          + mConnectedDeviceName, Toast.LENGTH_SHORT).show(); 
      break; 
     case MESSAGE_TOAST: 
      Toast.makeText(getApplicationContext(), msg.getData().getString(TOAST), 
          Toast.LENGTH_SHORT).show(); 
      break; 
     } 
    } 
}; 

這是OnCreate中:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mvc = (Button) findViewById(R.id.button1); 

    mvc.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      new Thread(new Runnable() { 
       public void run() { 
        while (progressStatus < 1000) { 
         Random r = new Random(); 
         int i1 = r.nextInt(1000); 
         if (i1 > progressStatus){ 
          progressStatus = i1; 
         } 
         else { 
          progressStatus = progressStatus; 
         } 
         // Update the progress bar and display the current value in the text view 
         handler.post(new Runnable() { 
          public void run() { 
           progressBar.setProgress(progressStatus); 

          } 
         }); 
         try { 
          // Sleep for 200 milliseconds. Just to display the progress slowly 
          Thread.sleep(500); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
      }).start(); 
     } 
    }); 
    res = (Button) findViewById(R.id.button2); 
    res.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      progressBar.setProgress(0); 
      progressStatus=0; 

     } 
    }); 

    if(D) Log.e(TAG, "+++ ON CREATE +++"); 

    // Set up the window layout 

    progressBar = (ProgressBar) findViewById(R.id.progressBar1); 
    // Get local Bluetooth adapter 
    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

    // If the adapter is null, then Bluetooth is not supported 
    if (mBluetoothAdapter == null) { 
     Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show(); 
     finish(); 
     return; 
    } 
} 

我傳遞變量ķ,有一個方法?或者我必須去公共int?我不知道如何解決。先謝謝你!

+1

既沒有私人空隙,也的onCreate在你的代碼的任何地方使用k。請儘量向我們展示一個相關的代碼,或者更好的抽象樣本。 –

+0

好吧,我加了全部! – user3313188

+0

k在哪裏?你不清楚你的動機。你想從一個私有方法傳遞一個變量給onCreate()方法? – AndyFaizan

回答

0

嗯,爲什麼不讓k爲全局變量?

添加int k啓動內部類

。例如:

... 
public class MainActivity extends Activity { 

int k; 

//onCreate and other methods 
} 
... 

變化 int k = =Integer.parseInt (readMessage.replaceAll.replaceAll("[\\D]",""));

k = =Integer.parseInt(readMessage.replaceAll.replaceAll("[\\D]","")); 因爲你已經做了k時的整數。

然後你就可以在你的類