现在页面有许多按钮,点击按钮代码如下
- Java code
String filename =listData.get(position).get("file").toString(); //为说明该值是动态,下个Activity需要用到该值做逻辑处理。btnfive3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.putExtra("name", filename); intent.setClass(mContext, Download.class); startActivity(intent); } });
那页面不是要复制以上代码,为例如btnfour1 ,btnOne1,等
我自己的理解,应该不需要,所以编写以下的代码
- Java code
class MyBtn implements OnClickListener{ public void onClick(View v) { } public void onClick(View v,String file) { } } OnClickListener myDialogOnClick = new MyBtn() { @Override public void onClick(View v,String file) { Intent intent = new Intent(); intent.putExtra("name", file); intent.setClass(mContext, Download.class); startActivity(intent); } };
但实际上发现用
btnfour4.setOnClickListener(myDialogOnClick);
还是没办法传入参数,大伙有没有什么好的解决方案.
------解决思路----------------------
public void onClick(View v,String file) 你自己定义的 没有回调函数 所以不会有反映
------解决思路----------------------
写了个例子,你看看能不能帮你
OnClickTestActivity.java
- Java code
package com.android.onclick;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;import android.widget.Toast;public class OnClickTestActivity extends Activity { private MyClick mc; private OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { String value = "你要传入的参数"; if (mc != null) { mc.onClick(v, value); } } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView) findViewById(R.id.tv); tv.setOnClickListener(listener); setMyClickListener(new MyClick() { @Override public void onClick(View v, String value) { Toast.makeText(OnClickTestActivity.this, value, 500).show();//这里做你所要的操作 } }); } private void setMyClickListener (MyClick mc) { this.mc = mc; } private interface MyClick { void onClick(View v, String value); }}