【问题标题】:Incrementing a value from another .java file从另一个 .java 文件增加一个值
【发布时间】:2016-02-03 11:21:32
【问题描述】:

这是“CatList_Activity.java”文件

    public class CatList_Activity extends ActionBarActivity{
GridView grid;
private String[] arrImagesStrings;
String Foldername;
CatListAdapter adapter;
private AdView mAdView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.catlist_activity);
    Toolbar toolbar = (android.support.v7.widget.Toolbar) this.findViewById(R.id.toolbar);
    toolbar.setTitle("");
    this.setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    mAdView = (AdView) findViewById(R.id.adView);
    mAdView.loadAd(new AdRequest.Builder().build());

    grid=(GridView)findViewById(R.id.lsv_catlist);
    Intent i=getIntent();
    Foldername=i.getStringExtra("Folder");

    arrImagesStrings = listAssetFiles(Foldername);  
    adapter=new CatListAdapter(CatList_Activity.this, R.layout.catlist_item, arrImagesStrings, Foldername);
    grid.setAdapter(adapter);
    grid.setOnItemClickListener(new OnItemClickListener() {

                @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            //Toast.makeText(getApplicationContext(), ""+selectedImagePath, Toast.LENGTH_SHORT).show();
            //Log.e("name", ""+Foldername+"/"+arrImagesStrings[position]);
            Intent intentdraw=new Intent(getApplicationContext(),Draw_Activity.class);
            intentdraw.putExtra("Folder", Foldername+"/"+arrImagesStrings[position]);
            startActivity(intentdraw);

        }

我想做的是在另一个文件(称为 Draw_Activity.java)中增加“位置”值,这样当我单击该文件中的按钮时,我转到下一页,基本上是位置值position + 1. 有没有办法做到这一点?

【问题讨论】:

  • 将增量字段设为静态。
  • 你的意思是在 OnItemClick 方法中定义的位置变量?
  • 无论你在做什么,我肯定不是正确的架构。为什么需要增加回调方法中的position 变量?
  • 您可以通过将变量设置为SharedPreference 或在同一活动中将此变量声明为static 来做到这一点。
  • @Ronik5k2 基本上我正在制作一个绘图应用程序,文件“CatList_Activity.java”是存储图像列表的菜单。单击一个时,它会转到“Draw_Activity.java”,打开图像(id 是“位置”)。我想制作“下一个”按钮,转到下一张图片(不返回“CatList_Activity.java”),我猜测通过增加“位置”值我会实现这一点,但我可能错了

标签: java android


【解决方案1】:

在你的 Draw_Activity 对象中创建一个公共函数来增加或做你想做的事情。

public class Draw_Activity ... {
    public void increasePosition(){
        this.position++;
    }
}

如果您无法从此类“CatList_Activity”访问“Draw_Activity”,则可以创建一个静态类来检索其他对象的实例。

public class Draw_Activity ... {

    //private instance
    private Draw_Activity instance;
    //constructor, if this is a static method you can access it whithout this
    //doing this Draw_Activity.increasePosition();
    public Draw_Activity {
       ...
       instance = this;
    }

    //public method to retrive this object
    public static Draw_Activity getInstance(){
        return instance;
    }
}

现在你可以从你的班级“CatList_Activity”中做到这一点:

public class CatList_Activity extends ActionBarActivity{
....
    protected void onCreate(Bundle savedInstanceState) {
        Draw_Activity.getInstance().increasePosition();
    }
}

我不知道您是否打算这样做,或者这是否适用于您的问题。希望对你有帮助。

【讨论】:

    【解决方案2】:

    如果位置,您可以使用类似的意图传递值

    intentdraw.putExtra("position", position);
    

    Draw_Activity中定义全局变量position

    int position;
    

    并在您的下一个活动Draw_ActivityonCreate(...) 方法中检索此值,您希望像这样增加位置计数器

    onCreate(..) {
        setContentView...;
        position = getIntent().getExtras().getInt("position") + 1;
    }
    

    在按钮单击侦听器的下一个活动中发送此变量..

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 1970-01-01
      • 2018-12-06
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多