2016-03-28 89 views
1

目前我的問題是,每當我嘗試訪問ArrayList <>我已經通過我的DataItem層發送,它告訴我該對象爲空。發送ArrayList <> DataItem從移動穿

有人可以澄清問題在哪裏下降嗎?

MOBILE

public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

--variables 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    if(!PreferenceManager.getDefaultSharedPreferences(this) 
      .getStringSet("wristaroo", new HashSet<String>()).isEmpty()) { 
     tasksSet = PreferenceManager.getDefaultSharedPreferences(this) 
       .getStringSet("wristaroo", new HashSet<String>()); 
     actsList = new ArrayList<>(tasksSet); 
    } 
    ----- 

    googleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Wearable.API) 
      .build(); 

    googleApiClient.connect(); 

    super.onCreate(savedInstanceState); 
    ----- 
    Button btnSave = (Button) findViewById(R.id.sendButton); 
    btnSave.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      PutDataMapRequest dataMap = PutDataMapRequest.create("/wristaroo/customschedule"); 
      dataMap.getDataMap().putStringArrayList("schedule", actsList); 
      PutDataRequest request = dataMap.asPutDataRequest(); 


      PendingResult<DataApi.DataItemResult> result = Wearable.DataApi 
        .putDataItem((googleApiClient), request); 
      System.out.println("Request: " + request); 
      System.out.println("Result: " + result); 

     } 
    }); 
} 

----- 

@Override 
public void onConnected(Bundle bundle) { 

    new DataTask (this, actsList).execute(); 
} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

} 

class DataTask extends AsyncTask<Node, Void, Void> { 

    private ArrayList<String> contents; 
    Context c; 

    public DataTask (Context c, ArrayList<String> contents) { 
     this.c = c; 
     this.contents = contents; 
    } 

    @Override 
    protected Void doInBackground(Node... nodes) { 
     PutDataMapRequest dataMap = PutDataMapRequest.create("/wristaroo/customschedule").setUrgent(); 
     dataMap.getDataMap().putStringArrayList("schedule", actsList); 

     PutDataRequest request = dataMap.asPutDataRequest().setUrgent(); 
     Log.i("Data", "data"); 
     DataApi.DataItemResult dataItemResult = Wearable.DataApi 
       .putDataItem((googleApiClient), request).await(); 
     System.out.println("dataItemResult: " + dataItemResult); 

     return null; 
    } 
} 
} 

WEAR

public class MainActivity extends Activity implements DataApi.DataListener,GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

    super.onCreate(savedInstanceState); 

    googleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Wearable.API) 
      .build(); 
--------- 

@Override 
public void onConnected(Bundle bundle) { 
    Wearable.DataApi.addListener(googleApiClient, this).setResultCallback(new ResultCallback<Status>() { 
     @Override 
     public void onResult(@NonNull Status status) { 
      Log.i("myTag", String.valueOf(status)); 
     } 
    }); 
    System.out.println("onConnected Activated!!!"); 
} 

@Override 
public void onDataChanged(DataEventBuffer dataEvents) { 
    for (DataEvent event : dataEvents) { 
     if (event.getType() == DataEvent.TYPE_CHANGED) { 
      // DataItem changed 
      DataItem item = event.getDataItem(); 
      if (item.getUri().getPath().compareTo("/wristaroo/customschedule") == 0) { 
       DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); 
       data = dataMap.getStringArrayList("schedule"); 
      } 
     } else if (event.getType() == DataEvent.TYPE_DELETED) { 
      // DataItem deleted 
     } 
    } 
} 

@Override 
public void onConnectionSuspended(int i) { 
} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) 

清單移動

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <meta-data android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".EditActivity" 
      android:label="@string/app_name"> 
     </activity> 
     <activity 
      android:name=".AddActivity" 
      android:label="@string/app_name"> 
     </activity> 
    </application> 

</manifest> 

清單穿

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

    <uses-feature android:name="android.hardware.type.watch" /> 

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

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".byDayActivity" 
      android:label="@string/app_name"> 
     </activity> 
     <activity 
      android:name=".byChoiceActivity" 
      android:label="@string/app_name"> 
     </activity> 
     <activity 
      android:name=".byStageActivity" 
      android:label="@string/app_name"> 
     </activity> 
     <activity 
      android:name=".byTimeActivity" 
      android:label="@string/app_name"> 
     </activity> 
     <activity 
      android:name=".byStageActActivity" 
      android:label="@string/app_name"> 
     </activity> 
    </application> 

</manifest> 

輸出,當我按上的移動應用

03-29 18:33:47.948 5246-5246/com.michaeldvinci.conedmiro.schedaroo W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=1307.8564, y[0]=2230.7813, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=473778, downTime=468682, deviceId=0, source=0x1002 } 
03-29 18:33:47.948 5246-5246/com.michaeldvinci.conedmiro.schedaroo W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=1307.8564, y[0]=2230.7813, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=473778, downTime=468682, deviceId=0, source=0x1002 } 
03-29 18:33:47.948 5246-5246/com.michaeldvinci.conedmiro.schedaroo W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=1307.8564, y[0]=2230.7813, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=473778, downTime=468682, deviceId=0, source=0x1002 } 
03-29 18:33:47.948 5246-5246/com.michaeldvinci.conedmiro.schedaroo W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=1307.8564, y[0]=2230.7813, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=473778, downTime=468682, deviceId=0, source=0x1002 } 
03-29 18:33:48.179 5246-5246/com.michaeldvinci.conedmiro.schedaroo I/System.out: Request: PutDataRequest[dataSz=108, numAssets=0, uri=wear:/wristaroo/customschedule, syncDeadline=0] 
03-29 18:33:48.179 5246-5246/com.michaeldvinci.conedmiro.schedaroo I/System.out: Result: [email protected] 
+0

你可以添加清單嗎?實際上,首先嚐試'setUrgent()'放置請求。請參閱[this](http://stackoverflow.com/questions/33716767/wearlistenerservice-ondatachanged-strange-behavior#answer-33717066) –

+0

已更新並將清單添加到帖子的底部,並更新了我的代碼以反映.setUrgent ()更改 – conedmiro

回答

0

這可能最終會被不正確的答案[發送]按鈕,但我認爲setUrgent()標誌可能是重要的:

請用此代碼:

PutDataMapRequest dataMap = PutDataMapRequest.create("/wristaroo/customschedule"); 
    dataMap.getDataMap().putStringArrayList("schedule", actsList); 

    PutDataRequest request = dataMap.asPutDataRequest(); 
    request.setUrgent(); 
    Log.i("Data", "data"); 
    DataApi.DataItemResult dataItemResult = Wearable.DataApi 
      .putDataItem((googleApiClient), request).await(); 
+0

不允許發送數據 - 我登錄上面的輸出! – conedmiro

相關問題