android - 应该如何在 PagerAdapter 中使用 getApplication 方法

标签 android android-pageradapter

当我想为此类使用 getApplication() 时遇到问题,错误是 plaaaaaaace...我应该使用什么代替 getApplication() (因为我想使用 TestClass 的方法被命名为 setNamePermit) 或者我应该如何 setNamePermit() 测试类的方法。

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;
    public TestClass app;

    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);

//what should use instead of getApplication() in below line:

        app = (TestClass)getApplication();

        btn_back_story01.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((Activity) ctx).finish();
                app.setNewPermit(false);
                ctx.startActivity(new Intent(ctx, MainStory01.class));
            }
        });

        return item_view;
    }



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

测试类是:

public class TestClass extends Application {

    public Boolean getMedia_state() {
        return media_state;
    }

    public void setMedia_state(Boolean media_state) {
        this.media_state = media_state;
    }

    Boolean media_state;
    Boolean checkPlaying;

    public Boolean getNewPermit() {
        return newPermit;
    }

    public void setNewPermit(Boolean newPermit) {
        this.newPermit = newPermit;
    }

    Boolean newPermit;
    MediaPlayer media;

    @Override
    public void onCreate() {
        super.onCreate();
        setMedia_state(true);
        setNewPermit(true);
        media = new MediaPlayer();
        media = MediaPlayer.create(getApplicationContext(), R.raw.music);
    }

    public void musicRestart() {
        media = MediaPlayer.create(getApplicationContext(), R.raw.music);
        media.start();
        media.setLooping(true);
    }

    public void musicPlay() {
        media.start();
        media.setLooping(true);
    }

    public boolean checkPlaying() {
        if (media.isPlaying()) {
            checkPlaying = true;
        } else {
            checkPlaying = false;
        }
        return checkPlaying;
    }

    public void musicStop() {
        media.stop();
    }

}

最佳答案

TestClass tc = new TestClass();

访问TestClass中的方法:

tc.setNewPermit(false);

更新:在您的寻呼机适配器中,您现在可以传递任何这些值。例如,将 btn_back_story01 onClick() 更改为:

btn_back_story01.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(CustomSwipeAdapter01.this, MainStory01.class);   
        intent.putExtra("is_new_permit", tc.getNewPermit());
        startActivity(intent);
    }
});

MainStory01 Activity 的 onCreate() 中,您现在可以通过 Bundle 获取在您的 Intent 中传递的额外内容...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle bundle = getIntent().getExtras();
    if(bundle != null) {
        boolean isNewPermit = bundle.getBoolean("is_new_permit");
    }

}

代码中可能存在一些错误,我现在不在工作电脑旁,但这应该能让您了解如何继续。

关于android - 应该如何在 PagerAdapter 中使用 getApplication 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33833055/

相关文章:

android - 如何在ViewPager中实现可缩放的ImageView?

Android 命令行工具 - 带库的项目中的 Ant 调试

android - 去掉大圆opencv android中的小圆

Android 底部导航更改项目选择的文本和图标色调

android - PageTabStrip 类未找到异常

android - findViewById 不是由 Fragment 定义的

Android 无尽的 FragmentPagerAdapter 在滑动时使用新的适配器

android - “ViewModelProviders”已弃用。 Java解决方案?

android - java.lang.ArrayIndexOutOfBoundsException : length=5; index=5 异常

Android ViewPager setAdapter 无法更新 View 和 fragment