java - 将扩展 LinearLayout 的自定义对象传递给另一个 Activity

标签 java android android-intent android-activity


我有一个 Activity ,用户可以在对话框中输入名称。
然后一个“BoardElemnt”对象(它自己的类扩展了 LinearLayout),其中包含带有输入名称和 Edittext 的 TextView ,将动态添加到 Activity 。用户可以根据需要多次执行此操作。

如果用户长按这样的 BoardElement,他可以选择是否要编辑或删除此 BoardElement。
如果他想编辑此 BoardElement,则应显示一个新的 Activity,用户可以在其中编辑一些内容特定的 BoardElement。 我的问题是,我无法将此 BoardElement 对象传递给“EditActivity”。

我的 BoardElement 类:

public class BoardElement extends LinearLayout implements TextWatcher{

private static Context context;
private RelativeLayout parentLayout ;
private LinearLayout fBoard ; 
private TextView txtOutput ;
private EditText editBudget ;
private String fName;
private TextView txtfName= new TextView(getContext()) ;
private EditText editBetrag = new EditText(getContext()) ;


/////////////////////////////////////////
//
// This Data can be Edited in the EditActivity
//

private String fotoPath ;
private String note ;
private String name ;
private String category ;
private String store ;
private String measures ;


//
//
/////////////////////////////////////////

/**
 *  
 * @param context
 * @param _parentLayout
 * @param _furnitureName
 */
public BoardElement(Context _context, RelativeLayout _parentLayout, String _fName){
    super(_context);

    context = _context;
    parentLayout = _parentLayout ;
    fName= _fName;


    category = fName;



    LinearLayout.LayoutParams mparams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    mparams.setMargins(0, 0, 0, 10) ;
    this.setLayoutParams(mparams) ;
    this.setOrientation(LinearLayout.HORIZONTAL) ;
    this.setBackgroundResource(R.drawable.board_element) ;



    LinearLayout.LayoutParams txtParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT) ;
    txtParams.gravity = Gravity.CENTER ;
    txtParams.weight = 1.0f;
    txtFurnitureName.setLayoutParams(txtParams) ;
    txtFurnitureName.setBackgroundResource(R.drawable.txt_fName) ;
    txtFurnitureName.setText(this.fName) ;
    txtFurnitureName.setTextColor(getResources().getColor(R.color.white)) ;
    txtFurnitureName.setTextSize(20) ;
    this.addView(txtfName) ;





    editBetrag.setInputType( InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL ) ;
    editBetrag.setTextColor(getResources().getColor(R.color.white)) ;
    editBetrag.setGravity(Gravity.RIGHT) ;
    editBetrag.setBackgroundResource(R.drawable.input_field );
    editBetrag.setFilters(new InputFilter[] {new InputFilter.LengthFilter(9)}) ;
    this.addView(editBetrag) ;
    editBetrag.addTextChangedListener(this) ;       


}
////////////////////////////////
//
// getters and setters 

// ...



我尝试使用 SerializedParcelable 将其传递给另一个 Activity,但没有成功。我只是使用 Parcelable 方法传递字符串成员,但随后我无法编辑这些成员...

问候

最佳答案

您可以将您的类(class)分成两个不同的类(class)。一个仅包含可编辑的字符串属性(Properties.class)的类。另一个只是构建布局(Layout.class)。这样,您只需通过 Intent 将 Properties.class 发送到您的 EditActivity,并在您想要膨胀它时将其传递给 Layout.class 。实现 Properties.class 的 Parcelable 接口(interface)应该很容易。

关于java - 将扩展 LinearLayout 的自定义对象传递给另一个 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25933672/

相关文章:

Android应用在 'Recent Apps'列表中多次出现

java - 8-Puzzle Solution 无限执行

java - 用于同步本地与远程版本的 ANT 脚本

java - android 事件监听器中的相对布局问题 : one child's listener is getting applied to all children

android - 如何在主题中全局更改android按钮文本颜色

android - osmdroid GoogleTilesOverlay 平滑调整大小缩放

java - 我的代码有什么问题? (执行代码时崩溃)

java - 将自定义对象传递给 Activity

android - 从 Android 上新的 Google 相册应用程序获取照片和视频

java - Spring验证不遵循POJO原则