2015-12-07 1 views
2

У меня проблема в приложении для Android. В моем приложении после нажатия на btn_back_story01 мне нужно отправить логическую переменную (называемую newPermit) из PageViewer (которая называется customeSwipeAdapter) в действие, которое расширяет класс Activity. PageViewer является:Как я могу отправить данные из PageAdapter в действие, которое расширяет класс активности

public class CustomSwipeAdapter01 extends PagerAdapter { 

private int[] image_Resources = {R.drawable.sample_01, R.drawable.sample_02, R.drawable.sample_03, R.drawable.sample_04, R.drawable.sample_05, R.drawable.sample_06, R.drawable.sample_07}; 
private Context ctx; 
private LayoutInflater layoutInflater; 
boolean newPermit; 



public CustomSwipeAdapter01(Context ctx) { 
    this.ctx = ctx; 
} 

@Override 
public int getCount() { 
    return image_Resources.length; 
} 

@Override 
public boolean isViewFromObject(View view, Object o) { 
    return (view == (RelativeLayout) o); 
} 

@Override 
public Object instantiateItem(final ViewGroup container, final int position) { 
    layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    final View item_view = layoutInflater.inflate(R.layout.activity_story01, container, false); 
    ImageView imageView = (ImageView) item_view.findViewById(R.id.image_view); 
    TextView textView = (TextView) item_view.findViewById(R.id.image_count); 
    Button btn_back_story01 = (Button) item_view.findViewById(R.id.btn_back_story01); 
    imageView.setImageResource(image_Resources[position]); 
    int itemNo = position + 1; 
    textView.setText(itemNo + "/" + getCount()); 
    container.addView(item_view); 
    newPermit=false; 






    btn_back_story01.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      newPermit = true; 
      ((Activity) ctx).finish(); 
      ctx.startActivity(intent); 
      boolean over=false; 



     } 
    }); 

    return item_view; 
} 


@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    container.removeView((RelativeLayout) object); 
}} 

и активность:

public class Story01 extends Activity { 

ViewPager viewPager; 
CustomSwipeAdapter01 adapter; 
Button btn_back_story01; 
boolean permit, oldPermit; 
protected TestClass app; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_viewer); 


    app = (TestClass) getApplication(); 

    viewPager = (ViewPager) findViewById(R.id.view_pager); 
    btn_back_story01 = (Button) findViewById(R.id.btn_back_story01); 
    adapter = new CustomSwipeAdapter01(this); 
    viewPager.setAdapter(adapter); 
} 

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) { 
     View decorView = getWindow().getDecorView(); 

     decorView.setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
         | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
    } 
} 

@Override 
protected void onStart() { 
    permit = false; 
    super.onStart(); 
} 



@Override 
protected void onStop() { 
    if (permit == false) { 
     app.musicStop(); 
    } 
    Intent intent = new Intent(getApplicationContext(), MainStory01.class); 
    startActivity(intent); 
    finish(); 
    super.onStop(); 
}} 

Я знаю, что это просто, но если вы не знаете простую вещь будет difficault.

+1

Использование 'Intent.putExtra'. есть ли какие-либо проблемы с этим? –

+0

вы пытаетесь передать логическую обратную ссылку на исходную активность или передать логическое значение новому действию? – Eoin

+0

yes Я пытаюсь передать логическое значение обратно в исходную активность @Modge –

ответ

1

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

CustomSwipeAdapter01

public class CustomSwipeAdapter01 extends PagerAdapter { 

    public interface NewPermitListener { 

     void onPermitClicked(boolean over); 
    } 

    private NewPermitListener mListener; 
    ... 

    public CustomSwipeAdapter01(Context ctx, NewPermitListener listener) { 
     this.ctx = ctx; 
     // pass the listener in the constructor 
     mListener = listener; 
    } 

    ... 

    @Override 
    public Object instantiateItem(final ViewGroup container, final int position) { 
     ... 
     btn_back_story01.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ... 
       // call the method 
       mListener.onPermitClicked(false); 
      } 
     }); 

     return item_view; 
    } 
} 

Story01

public class Story01 extends Activity implements CustomSwipeAdapter01.NewPermitListener{ 

    ... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_viewer); 
     ... 
     // pass the listener in here 
     adapter = new CustomSwipeAdapter01(this, this); 
     viewPager.setAdapter(adapter); 
    } 

    @Override 
    public void onPermitClicked(boolean over) { 
     // do something with boolean 
    } 

    ... 
} 
+1

Спасибо большое @Modge –

Смежные вопросы