Почему OnActivtiyResult не вызывается в фрагменте? Xamarin android [дубликат]

Что касается вашего требования, попробуйте это

jQuery(document).on("change", ".DDLChoices", function (e) {
   
    var comma_ChoiceIds = '';
    var comma_ChoicesText = '';
    $('input[class="DDLChoices"]').each(function (e) {
        if (this.checked) {
            comma_ChoiceIds = comma_ChoiceIds + $(this).val() + ',';
            comma_ChoicesText = comma_ChoicesText + $(this).parent('label').parent() + ',';
        }
    });
    $('#ChoiceIds').val(comma_ChoiceIds);
    $('#ChoiceText').val(comma_ChoicesText);
});
@using (Html.BeginForm("Actionname", "Controllername", FormMethod.Post, new { id = "frmChoices" }))
{
	
    @Html.HiddenFor(m => m.ChoiceText, new { @id = "ChoiceText" })
    @Html.HiddenFor(m => m.ChoiceIds, new { @id = "ChoiceIds" })
    <div class="form-group">
        <div>
            <table>
                <tr>
                    <th>Name</th>
                    <th>Selected</th>
                </tr>
                @foreach (var item in @Model.Choices)
                {
                    <tr>
                        <td> <label>@item.ChoicesText</label>    </td>
                        <td> <input class="DDLChoices" value="@item.ChoiceIds" type="checkbox" /></td>
                    </tr>
                }
            </table>
        </div>
		<input type="button" value="Submit" onclick="return ChoicesPoster.passChoices()"
		</div>
	}

3
задан Sean Cuvanov 15 September 2014 в 18:55
поделиться

3 ответа

Хм .. Я создал образец, и он работал отлично для меня. Единственное различие, которое я вижу, это то, что похоже, что ваш переопределить неверен. Это должно быть public override void OnActivityResult ()

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    var rootView = inflater.Inflate(Resource.Layout.MainFragment, container, false);
    var button = rootView.FindViewById<Button>(Resource.Id.button_camera);
    button.Click += (sender, args) =>
    {
        var intent = new Intent(MediaStore.ActionImageCapture);
        StartActivityForResult(intent, 0);
    };
    return rootView;
}

public override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    Log.Debug("TestFragment", "Got result");

    // do what you want with the result here
}
2
ответ дан Kiliman 26 August 2018 в 06:13
поделиться

Попробуйте изменить тип данных в resultCode на int вместо Result и сделать переопределенную функцию public.

, например.

public override void OnActivityResult(int requestCode, int resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);
}
0
ответ дан Curiousity 26 August 2018 в 06:13
поделиться

Проверить код запроса так же, как и для startActivityForResult (цель, 0) здесь 0 - код запроса .. например, если вы поместили 999 здесь insted из 0 .. then in onActivity result method check для requestcode == 999. это используется, чтобы проверить, совпадает ли намерение с запросом и не что иное.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 0 && resultCode == RESULT_OK) { // ADD THIS
    // Get Data and do something with it 
    }
}
0
ответ дан Kushal Sharma 26 August 2018 в 06:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: