2016-12-06 3 views
1

я пытаюсь сделать доступ по переходу от одного вида деятельности к другому это мой основной код деятельностине может использовать ActivityOptionsCompat в OnClick() метод

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if(Build.VERSION.SDK_INT>=21){ 
     TransitionInflater ti=TransitionInflater.from(this); 
     Transition t=ti.inflateTransition(R.transition.transition); 
     getWindow().setEnterTransition(t); 
     getWindow().setExitTransition(t); 
    } 
    setContentView(R.layout.activity_main); 
    Button b=(Button) findViewById(R.id.button); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      view.setTransitionName("test"); 
      ActivityOptionsCompat c=ActivityOptionsCompat.makeSceneTransitionAnimation(this,view.getTransitionName()); 
     } 
    }); 
} 

и второй код активности

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if(Build.VERSION.SDK_INT>=21){ 

     Transition i=TransitionInflater.from(this).inflateTransition(R.transition.transition); 
     getWindow().setEnterTransition(i); 
     getWindow().setExitTransition(i); 
    } 
    setContentView(R.layout.b); 

} 

я получение ошибки

error: incompatible types: <anonymous OnClickListener> cannot be converted to Activity 
      ActivityOptionsCompat c=ActivityOptionsCompat.makeSceneTransitionAnimation(this,view.getTransitionName()); 

Включено текущие оконные переходы в стиле.xml

<item name="android:windowContentTransitions">true</item> 

и сделал создать транзакцию файл XML в Резе папки

<?xml version="1.0" encoding="utf-8"?> 
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> 
<slide/> 
<changeBounds/> 
</transitionSet> 

во всех учебных пособиях он работает, но когда я пытаюсь ее не работает , почему это происходит и что такое исправление для него

и ошибок это свидетельствует о

Wrong 2nd argument type.ound:'java.lang.String',required:android.support.v4.util.Pair<android.view.View,java.lang.String>makeSceneTransitionAnimation(Activity,android.support.v4.util.Pair<android.view.View,java.lang.String>...)in ActivityOptionsCompat cannot be applied to (MainActivity,java.lang.String) 

ответ

0

Попробуйте изменить

ActivityOptionsCompat c=ActivityOptionsCompat.makeSceneTransitionAnimation(this,view.getTransitionName()); 

в

ActivityOptionsCompat c=ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(),view.getTransitionName()); 
+0

не может разрешить метод даже (this.getActivity() или getParentActivity() или getCallingActivity()) дает тот же результат, который не может применяться –

0

Попробуйте заменить

ActivityOptionsCompat c = ActivityOptionsCompat.makeSceneTransitionAnimation(this,view.getTransitionName()); 

в

ActivityOptionsCompat c = ActivityOptionsCompat.makeSceneTransitionAnimation(YOUR_ACTIVITY.this,view.getTransitionName()); 

Например MainActivity.this

UPD

Посмотрите на documentation, то makeSceneTransitionAnimation должно быть так:

makeSceneTransitionAnimation (активность деятельности, Просмотр sharedElement, Строка sharedElementName)

+0

та же ошибка результата –

+0

Не тот же результат, вы указали еще одну ошибку. Вы пропустили второй аргумент в методе 'makeSceneTransitionAnimation'. https://developer.android.com/reference/android/support/v4/app/ActivityOptionsCompat.html#makeSceneTransitionAnimation(android.app.Activity, android.view.View, java.lang.String) –

+0

он выдавал ту же ошибку с этим –

0
Ответ

Василия Kabunov работал для меня , Я попытался использовать переменную контекста, но я не работал. Когда я заменил Intent intent = new Intent(context, AddNodeActivity.class); с Intent intent = new Intent(AllNodesActivity.this, AddNodeActivity.class); , он сработал.