Активировать следующий шаг на панели выполнения

Я считаю, что лучше всего проверить, добавлен ли фрагмент перед вызовом метода в фрагменте. Сделайте что-то подобное, чтобы избежать нулевого исключения.

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
if(fragment.isAdded()){
  fragment.<specific_function_name>(); 
}
1
задан Adeel 13 July 2018 в 15:15
поделиться

3 ответа

Попробовав все предложения от @Adeel и @Matthias Schmidt, я заметил, что у меня все еще была та же проблема. Сценарий не добавлял class="active" или class='active' вместо этого, он добавлял class, но когда вы изменили его на другое, он добавил. Поэтому я переопределил класс active на mynewactive, и он согласился добавить class="mynewactive"

2
ответ дан Paul Wakhungu 17 August 2018 в 13:12
поделиться
  • 1
    вы можете принять свой собственный ответ! – Adeel 16 July 2018 в 10:20
Цвет

blue указывает, что цвет .active, цвет red - .step-done, а цвет green - обычный цвет без какого-либо дополнительного класса.

Добавить событие click только на li.active, например .nav-tabs li.active a. $(this).parent() означает текущий родительский тег, который является li, потому что обработчик события имеет место на якоре a и использует .next(), чтобы найти следующего родственника текущего элемента. Для более подробной проверки jQuery .next ()

Пожалуйста, проверьте ниже фрагмент кода:

$(document).on('click', '.nav-tabs li.active a', function() {
    $(this).parent().removeClass("active");
    $(this).parent().addClass("step-done"); 
    $(this).parent().next().addClass('active');
});
.nav-tabs {
    list-style: none;
}

.nav-tabs li {
    display: inline-block;
    background: #5fba7d; // green color
    margin: 0 10px;
    padding: 10px;
    color: white;
}

.nav-tabs li a {
    cursor: pointer;
}

li.active {
    background: #0095ff; // blue color
}

li.step-done {
    background: #dc3d4c; // red color
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="active">
        <a aria-controls="select-room"><span class="mg-bs-tab-num">1</span><span class="mg-bs-bar"></span>Select Room</a>
    </li>
    <li role="presentation" class="">
        <a aria-controls="personal-info"><span class="mg-bs-tab-num">2</span><span class="mg-bs-bar"></span>Personal Info</a>
    </li>
    <li role="presentation">
        <a aria-controls="payment"><span class="mg-bs-tab-num">3</span><span class="mg-bs-bar"></span>Payment</a>
    </li>
    <li role="presentation">
        <a aria-controls="thank-you"><span class="mg-bs-tab-num">4</span>Thank You</a>
    </li>
</ul>

2
ответ дан Adeel 17 August 2018 в 13:12
поделиться

Вот мой подход к этому, я надеюсь, что он делает то, что вы хотите. Он удаляет класс active из первого элемента этого класса, обменивает его с классом step-done, а затем добавляет класс active к следующему шагу - он должен работать для всех четырех шагов.

$('#advance').click(function(){
  var active = $(".nav-tabs .active:first");
  active.removeClass("active");
  active.addClass("step-done");
  active.next("li").addClass("active");
});
.active{
  background:yellow;
}
.step-done{
  background:lime;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="active">
        <a aria-controls="select-room"><span class="mg-bs-tab-num">1</span><span class="mg-bs-bar"></span>Select Room</a>
    </li>
    <li role="presentation" class="">
        <a aria-controls="personal-info"><span class="mg-bs-tab-num">2</span><span class="mg-bs-bar"></span>Personal Info</a>
    </li>
    <li role="presentation">
        <a aria-controls="payment"><span class="mg-bs-tab-num">3</span><span class="mg-bs-bar"></span>Payment</a>
    </li>
    <li role="presentation">
        <a aria-controls="thank-you"><span class="mg-bs-tab-num">4</span>Thank You</a>
    </li>
</ul>
<button id="advance">Advance Step</button>

2
ответ дан Matthias Schmidt 17 August 2018 в 13:12
поделиться
Другие вопросы по тегам:

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