现在页面有许多按钮,点击按钮代码如下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,等
我自己的理解,应该不需要,所以编写以下的代码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);
 还是没办法传入参数,大伙有没有什么好的解决方案.

解决方案 »

  1.   

    这个函数要有地方被调用啊
    public void onClick(View v,String file) {    
                }
    你可以在用个Interface去转化
      

  2.   

     public void onClick(View v,String file) 你自己定义的 没有回调函数 所以不会有反映
      

  3.   

    写了个例子,你看看能不能帮你
    OnClickTestActivity.java
    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);
        }
    }main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >    <TextView
            android:id="@+id/tv"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello" /></LinearLayout>
      

  4.   

    写了个例子,你看看能不能帮你
    OnClickTestActivity.java
    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);
        }
    }main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >    <TextView
            android:id="@+id/tv"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello" /></LinearLayout>
      

  5.   

    能否具体点,是指用public interface MyBtn{
    public void MyBtn();
    }public class XXXActivity  implements MyBtn 
    然后@Override
    public void MyBtn() {
    //但这样该如何写 ???
    }
      

  6.   

    网络卡,回复了两遍,<_<!
      

  7.   

    谢谢long33long提供的OnClickTestActivity.java例子,按需求自己作了以下小修动问题已解决 if (mc != null) {             
                 switch (v.getId()) {
             case R.id.one:
              mc.onClick(v, btnone.getTag().toString(),btnone.getText().toString());
             break;
             case R.id.two:
             mc.onClick(v, btntwo.getTag().toString(),btntwo.getText().toString());
             break;
    ....