Большинство этих ответов продолжают говорить, что вы должны называть super.onActivityResult(...)
в своем хосте Activity
для вашего Fragment
. Но, похоже, это не работало для меня.
Итак, в вашем хосте Activity
вместо этого вы должны называть свой Fragments
onActivityResult(...)
. Вот пример.
public class HostActivity extends Activity {
private MyFragment myFragment;
protected void onActivityResult(...) {
super.onActivityResult(...);
this.myFragment.onActivityResult(...);
}
}
В какой-то момент вашего HostActivity
вам нужно будет назначить this.myFragment
Fragment
, который вы используете. Или используйте FragmentManager
, чтобы получить Fragment
вместо сохранения ссылки на него в HostActivity
. Кроме того, проверьте null
, прежде чем пытаться вызвать this.myFragment.onActivityResult(...);
.
Я думаю, что Вы ищете, TypeName, а не TypeOf.
If TypeName(foobar) = "CommandButton" Then
DoSomething
End If
Править: Что Вы имеете в виду Динамические объекты? Вы имеете в виду объекты, созданные с CreateObject (""), причина, которая должна все еще работать.
Править:
Private Sub Command1_Click()
Dim oObject As Object
Set oObject = CreateObject("Scripting.FileSystemObject")
Debug.Print "Object Type: " & TypeName(oObject)
End Sub
Выводы
Object Type: FileSystemObject
TypeName - то, что Вы хотите... Вот некоторый вывод в качестве примера:
Код VB6:
Private Sub cmdCommand1_Click()
Dim a As Variant
Dim b As Variant
Dim c As Object
Dim d As Object
Dim e As Boolean
a = ""
b = 3
Set c = Me.cmdCommand1
Set d = CreateObject("Project1.Class1")
e = False
Debug.Print TypeName(a)
Debug.Print TypeName(b)
Debug.Print TypeName(c)
Debug.Print TypeName(d)
Debug.Print TypeName(e)
End Sub
Результаты:
String
Integer
CommandButton
Class1
Boolean
У меня нет копии VB6 для вручения, но я думаю, что Вам нужно
Typename()
функция... Я вижу его в Excel VBA, таким образом, это находится, вероятно, в том же времени выполнения. Интересно, справка, кажется, предлагает, чтобы она не должна была работать на пользовательский тип, но это о единственном способе, которым я когда-либо использую ее.
Выборка от справочного файла:
Функция TypeName
Возвращает Строку, которая предоставляет информацию о переменной.
Синтаксис
TypeName (varname)
Необходимым varname аргументом является Вариант, содержащий любую переменную кроме переменной пользовательского типа.
Это должно оказаться трудным, с тех пор в VB6 все объекты являются COM (IDispatch
) вещи. Таким образом они - только интерфейс.
TypeOf(object) is class
вероятно, только делает COM get_interface вызов (я забыл точное имя метода, извините).