【问题标题】:Converting textView to Boolean to avoid: The method putExtra(String, boolean) in the type Intent is not applicable for the arguments将 textView 转换为 Boolean 以避免:Intent 类型中的方法 putExtra(String, boolean) 不适用于参数
【发布时间】:2014-02-10 16:32:42
【问题描述】:

我在 Eclipse 中收到错误声明:Intent 类型中的 putExtra(String, boolean) 方法不适用于参数 (String, TextView)

我相信我需要将我的 textView 更改为布尔值,但是当我尝试这样做时 - 它会导致发生其他错误。在这种情况下避免此错误的最佳方法是什么:

public class CustomListViewAdapter extends ArrayAdapter<Cmd> {
    Activity context;
    List<Cmd> videos;

    public CustomListViewAdapter(Activity context, List<Cmd> videos) {
        super(context, R.layout.list_item2, videos);

        this.context = context;
        this.videos = videos;
    }

    /* private view holder class */
    private class ViewHolder {
        ImageView imageView;
        TextView txtSuccess;
        TextView txtCmd;
        TextView txtPrice;
    }

    public void run() {

        Intent intent = new Intent(context, ViewVideo.class);
        ViewHolder holder;
        intent.putExtra("videofilename", holder.txtCmd);
        context.startActivity(intent);
    }

    public Cmd getItem(int position) {
        return videos.get(position);
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        LayoutInflater inflater = context.getLayoutInflater();
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.list_item2, null);
            holder = new ViewHolder();
            holder.txtSuccess = (TextView) convertView
                    .findViewById(R.id.success);
            holder.txtCmd = (TextView) convertView.findViewById(R.id.cmd);
            holder.txtPrice = (TextView) convertView.findViewById(R.id.price);
            holder.imageView = (ImageView) convertView
                    .findViewById(R.id.thumbnail);
            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        Cmd cmd = (Cmd) getItem(position);

        holder.txtSuccess.setText(cmd.getVideoName());
        holder.txtSuccess.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                run();
            }
        });
        holder.txtCmd.setText(cmd.getCmd());
        holder.txtCmd.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                run();
            }
        });

        holder.txtPrice.setText(cmd.getVideoURL() + "");
        holder.txtPrice.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                run();
            }
        });

        holder.imageView.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                run();
            }
        });
        return convertView;

    }

}

【问题讨论】:

  • 您只能捆绑可序列化的数据,您的 textview 是您之前活动的 ui 元素。为了给你适当的帮助,你想在新的 Intent 中用你的 textview 做什么?你只需要里面的文字吗?
  • 您希望将 textview 中的文本传递给活动吗?

标签: java android string textview boolean


【解决方案1】:
public void run(String txt) {

    Intent intent = new Intent(context, ViewVideo.class);
    intent.putExtra("videofilename",txt);
    context.startActivity(intent);
}

在视图中:

final  Cmd cmd = (Cmd) getItem(position);

在点击中:

run(cmd.getCmd());

【讨论】:

    【解决方案2】:
    The method putExtra(String, boolean) in the type Intent is not applicable for the arguments (String, TextView)
    

    public Intent putExtra (String name, boolean value) 名称是键,值是布尔值。所以它需要一个布尔值。

    我认为您也不想使用布尔值。我猜你想将 textview 中的文本传递给另一个活动

    看@

    http://developer.android.com/reference/android/content/Intent.html

    你可以使用View对象v

    holder.txtCmd.setOnClickListener(new View.OnClickListener() {
    
                public void onClick(View v) {
                    TextView tv =(TextView)v;   // cast to textview 
                    Intent intent = new Intent(context, ViewVideo.class);
                    intent.putExtra("videofilename", tv.getText().toString());
                    // use getText to get the text from textview
                    context.startActivity(intent);
                }
            });
    

    或者您可以在视图上使用setTaggetTag

    【讨论】:

      【解决方案3】:

      部分:

      ViewHolder holder;
      intent.putExtra("videofilename", holder.txtCmd);  
      

      不会得到任何东西, holder.txtCmd.getText 不会返回文件名,而是您可以使用函数 run(String filename) 作为参数传递文件名。然后就可以直接作为文本传递了。

      【讨论】:

        猜你喜欢
        • 2013-03-20
        • 1970-01-01
        • 2014-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多