我有我的MainActivity,里面有很多片段。我还有另一个活动作为我的启动器,并与我的应用程序的Google云端硬盘部分有关。启动时,此活动将启动,连接到Drive,然后启动MainActivity。我的一个片段中有一个按钮,当按下时,需要调用DriveActivity中的方法。我无法创建DriveActivity的新实例,因为googleApiClient将为null。这有可能,我该怎么做呢?我已经尝试过使用getActivity和cast,但我认为这不起作用,因为DriveActivity不是父片段。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//TODO for test only remove
directory = new Directory(SDCARD + LOCAL_STORAGE);
byte[] zippedFile = directory.getZippedFile(SDCARD + STORAGE_LOCATION + directory.getZipFileName());
//Here I need to somehow call DriveActivity.uploadFileToDrive(zippedFile);
//((DriveActivity)getActivity()).uploadFileToDrive(zippedFile);
}
});
答案 0 :(得分:1)
是的,所以我对heirarchy有点困难,但我认为你想要做的是在片段中定义一个方法,该活动需要覆盖才能使用。
这将允许您按下按钮,然后触发实际实现在父级内部的方法。
public interface Callbacks {
/**
* Callback for when an item has been selected.
*/
public void onItemSelected(String id);
}
示例实现:
private static Callbacks sDummyCallbacks = new Callbacks() {
@Override
public void onItemSelected(String id) {
//Button fired logic
}
};
所以在孩子中你只需要打电话:
this.onItemSelected("ID of Class");
<强> EDITED 强>
回想起我认为你需要的是一项活动,其唯一目的是上传文件,而不是发起其他活动。
以下是“创建文件”活动的示例:Google Demo for creating a file on drive
以下是“基本上传”活动“Base Service creator
的示例