Как решить: Пользовательская задача MSBuild требует сборки за пределами AppBase

Вы должны добавить swip tp для imageView, а не для самостоятельного перелистывания, так как для imageview это вид, к которому прикоснулись, а не для флиппера.

  1. создать интерфейс следующим образом,

    public interface ISwip {
        public void onSwip(MotionEvent event,int position);
    }
    
    [117 ]
  2. Реализовать это в MainActivity

    public class MainActivity extends AppCompatActivity implements ISwip
    
  3. инициировать адаптер с ISwip

    public class TrendingViewPagerAdapter extends BaseAdapter {
    ISwip iSwip;
    
    public TrendingViewPagerAdapter(Context context, int[] moviePosters, ISwip iSwip) {
       this.iSwip = iSwip;
    }
    
  4. установить mGestureDetector для imageView в адаптере вместо viewFlipper

            imageView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                //set interface here and send event back to MainActivity
                iSwip.onSwip(event,position)
                return true;
            }
        });
    
  5. удалить касание флиппера из MainActivity

            viewFlipper.setOnTouchListener(new View.OnTouchListener() {
        });
    
  6. реализовать onSwip в MainActivity [1120 ]

    @Override
    public void onSwip(MotionEvent event, int position) {
    
        itemClicked = position;
        mGestureDetector.onTouchEvent(event);
    }
    

Редактировать : добавить позицию в качестве второй переменной в методе интерфейса, в MainActivity, а затем использовать его внутри метода OnSingleTapUp () следующим образом: [ 1121]

class CustomGestureDetector extends GestureDetector.SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

            // Swipe left (next)
            if (e1.getX() > e2.getX()) {
                viewFlipper.stopFlipping();
                viewFlipper.showNext();
                viewFlipper.startFlipping();
            }

            // Swipe right (previous)
            if (e1.getX() < e2.getX()) {
                viewFlipper.stopFlipping();
                viewFlipper.showPrevious();
                viewFlipper.startFlipping();
            }

            return super.onFling(e1, e2, velocityX, velocityY);
        }

        @Override
        public boolean onSingleTapUp(MotionEvent e) {

            Toast.makeText(MainActivity.this,"item Selected "+clickedPosition,Toast.LENGTH_LONG).show();
            return super.onSingleTapUp(e);
        }

Это сработало для меня.

}

6
задан aoven 2 April 2009 в 12:05
поделиться

3 ответа

Так скопируйте его вместо этого? Просто мысль. Имейте копию там только для поддержки сборки, которую Вы удаляете, после того как Вы сделаны с нею.

2
ответ дан 17 December 2019 в 20:35
поделиться

Я вижу несколько решений:

1-й: Добавьте блок в GAC (Ваш блок должен иметь строгое имя),

gacutil /I <assembly name> 

2-й: Найдите блок через Кодовые базы или Зондирование в Вашем machine.config файле или в msbuild.exe.config .

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="MyCommon"
                              publicKeyToken="32ab4ba45e0a69a1"
                              culture="neutral" />
            <codeBase version="2.0.0.0"
                      href="file://C:/yourpath/MyCommon.DLL"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

3-й: скопируйте блок в том же каталоге прежде и удалите, он после, как David M сказал.

1
ответ дан 17 December 2019 в 20:35
поделиться

Все эти «решения» создают больше зависимостей, которые усложняют среду. Должен быть более простой способ обновить путь проверки во время выполнения.

В частности, MSBuild должен позволять вам добавлять пути проверки в ваш файл .proj или указывать зависимые библиотеки dll

Вы можете определить настраиваемую UsingTask:

но вы не можете добавить зависимости? он должен быть включен ... здесь с чем-то вроде

<UsingTask TaskName="Task" AssemblyFile="Assembly.dll">
<DependantAssembly AssemblyFile="dependant.dll"/>
</UsingTask>

Но нет, это не поддерживается ...

-1
ответ дан 17 December 2019 в 20:35
поделиться
Другие вопросы по тегам:

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