2016-08-22 5 views
-2

私は答えを探していました。 Googleドライブでアプリケーションを動作させようとしています。 私の問題は、クラスで呼び出されたアダプタでインテントを使用しているため、別のアクティビティから取得したインテント変数を渡したいと思います。アクティビティからのグローバル変数を使用するアダプタの意図

マイ内部クラス:

public class QueryFilesActivity extends BaseDemoActivity { 

    private ListView mResultsListView; 
    private ResultsAdapter mResultsAdapter; 
    Date date = new Date(); 
    String stringDate = DateFormat.getDateInstance().format(date); 
    String ecrire; 
    String ville; 
    String container; 
    @Override 
    protected void onCreate(Bundle b) { 
     super.onCreate(b); 
     setContentView(R.layout.activity_listfiles); 
     mResultsListView = (ListView) findViewById(R.id.listViewResults); 
     mResultsAdapter = new ResultsAdapter(this); 
     mResultsListView.setAdapter(mResultsAdapter); 
     Intent i = getIntent(); 
     ecrire = i.getStringExtra("test"); 
     ville = i.getStringExtra("ville"); 
     container = i.getStringExtra("cont"); 
    } 

    /** 
    * Clears the result buffer to avoid memory leaks as soon 
    * as the activity is no longer visible by the user. 
    */ 
    @Override 
    protected void onStop() { 
     super.onStop(); 
     mResultsAdapter.clear(); 
    } 

    @Override 
    public void onConnected(Bundle connectionHint) { 
     super.onConnected(connectionHint); 
     Query query = new Query.Builder() 
       .addFilter(Filters.eq(SearchableField.TITLE, stringDate+"_"+ville+2)) 
       .build(); 
     Drive.DriveApi.query(getGoogleApiClient(), query) 
       .setResultCallback(metadataCallback); 
    } 

    final private ResultCallback<MetadataBufferResult> metadataCallback = new 
      ResultCallback<MetadataBufferResult>() { 
       @Override 
       public void onResult(MetadataBufferResult result) { 
        if (!result.getStatus().isSuccess()) { 
         showMessage("Problem while retrieving results"); 
         return; 
        } 
        mResultsAdapter.clear(); 
        mResultsAdapter.append(result.getMetadataBuffer()); 
       } 
      }; 
} 

そして、私のアダプタ:

public class ResultsAdapter extends DataBufferAdapter<Metadata> { 


    public ResultsAdapter(Context context) { 
     super(context, android.R.layout.simple_list_item_1); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = View.inflate(getContext(), 
        android.R.layout.simple_list_item_1, null); 
     } 
     Metadata metadata = getItem(position); 

     String resultat = metadata.getAlternateLink(); 
     String S1 = resultat.substring(32,60); 
     TextView titleTextView = 
       (TextView) convertView.findViewById(android.R.id.text1); 
     titleTextView.setText(S1); 
     Intent intent = new Intent(getContext(), EditContentsActivity.class); 
     intent.putExtra("file", S1); 



     getContext().startActivity(intent); 


     return convertView; 
    } 

} 

私は、アダプタの意図に私の意図で何を得る渡ししたいと思います。 提案がありますか?

+0

nullであるということですか?どうしたの?私はあなたが既にあなたのコードの中のそれらの両方をしているのを見ます。 – nasch

+0

ええ、あなたはすでに意図を送信し、データを取得するために必要なものを実装しているようですが、何かエラーがありますか? –

+0

私は自分のアクティビティに入っているものを、アダプター内部の意図に入れて、EditcontentsActivityに渡したいと思います。私は少し失われてしまいましたか...それとも、直接取得できるのでしょうか?する – filoman

答えて

0

私のドライブに物を記録するために私の3クラスを入れるのを忘れてしまった。

public class EditContentsActivity extends BaseDemoActivity { 
String saver; 
String numero; 
String file; 
String ville; 


private static final String TAG = "EditContentsActivity"; 

@Override 
public void onConnected(Bundle connectionHint) { 
    super.onConnected(connectionHint); 

    final ResultCallback<DriveApi.DriveIdResult> idCallback = new ResultCallback<DriveApi.DriveIdResult>() { 
     @Override 
     public void onResult(DriveApi.DriveIdResult result) { 
      if (!result.getStatus().isSuccess()) { 
       showMessage("Cannot find DriveId. Are you authorized to view this file?"); 
       return; 
      } 
      DriveId driveId = result.getDriveId(); 
      DriveFile file = driveId.asDriveFile(); 
      new EditContentsAsyncTask(EditContentsActivity.this).execute(file); 
     } 
    }; 
    Intent i = getIntent(); 
    file = i.getStringExtra("file"); 
    ville = i.getStringExtra("localite"); 

    Drive.DriveApi.fetchDriveId(getGoogleApiClient(), file) 
      .setResultCallback(idCallback); 
} 

public class EditContentsAsyncTask extends ApiClientAsyncTask<DriveFile, Void, Boolean> { 

    public EditContentsAsyncTask(Context context) { 
     super(context); 
    } 

    @Override 
    protected Boolean doInBackgroundConnected(DriveFile... args) { 
     DriveFile file = args[0]; 
     try { 
      DriveApi.DriveContentsResult driveContentsResult = file.open(
        getGoogleApiClient(), DriveFile.MODE_READ_WRITE, null).await(); 
      if (!driveContentsResult.getStatus().isSuccess()) { 
       return false; 
      } 
      Intent i = getIntent(); 
      saver = i.getStringExtra("test"); 
      numero = i.getStringExtra("cont"); 
      double e1 = i.getDoubleExtra("lat", 0); 
      double e2 = i.getDoubleExtra("longi", 0); 

      DriveContents driveContents = driveContentsResult.getDriveContents(); 
      ParcelFileDescriptor parcelFileDescriptor = driveContents.getParcelFileDescriptor(); 
      FileInputStream fileInputStream = new FileInputStream(parcelFileDescriptor.getFileDescriptor()); 
      fileInputStream.read(new byte[fileInputStream.available()]); 
      FileOutputStream fileOutputStream = new FileOutputStream(parcelFileDescriptor.getFileDescriptor()); 
      Writer writer = new OutputStreamWriter(fileOutputStream); 
      writer.write("\n container "+numero+" : "+saver+"\nlatitude : "+e1+" longitude : "+e2+ville); 
      writer.close(); 
      fileOutputStream.close(); 
      //OutputStream outputStream = driveContents.getOutputStream(); 
      //outputStream.write("Hello world".getBytes()); 
      com.google.android.gms.common.api.Status status = 
        driveContents.commit(getGoogleApiClient(), null).await(); 
      return status.getStatus().isSuccess(); 
     } catch (IOException e) { 
      Log.e(TAG, "IOException while appending to the output stream", e); 
     } 
     return false; 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 
     if (!result) { 
      showMessage("Error while editing contents"); 
      return; 
     } 
     showMessage("les données ont bien été enregistrées"); 
    } 
} 

} 何が起こっているのか、私の変数はあなたが活動の意図から値を引き出し、およびバンドルにそれらを配置する必要があり

関連する問題