2017-08-02 3 views
0

私はマルチプラットフォームのモバイルアプリケーションで作業しています。私はほとんどそれを終えたが、私はいつもiOS(理由のために)でテストした。今度はAndroidでテストして、多くの点で失敗していることを確認できました。Appcelerator:アンドロイドのビューに要素が追加されない

alloy.createSomeElement({ 
    //params 
}) 
$.someView.add(someElemet); 

要素がビューに追加されていません。

ここでの主な問題は、私が使用している場合ということです。私が言及したように、これはAndroidでのみ発生し、iOS上で正常に動作します。

ここでは例を示し、両方のプラットフォームでの結果です。 iOSの

e.json.forEach(function(address) { 
    var addressView = Ti.UI.createView({ 
     height : Ti.UI.SIZE, 
      width : '90%', 
      layout : 'horizontal', 
      touchEnabled : true, 
      Address_id : address.id 
     }); 
     var icoCont = Ti.UI.createView({ 
      height : 20, 
      width : '10%' 
     }); 
     var icon = Ti.UI.createImageView({ 
      height : '20', 
      width : '20', 
      image : "/compartidos/persona3.png", 
      touchEnabled : false 
     }); 
     var addressText = Ti.UI.createLabel({ 
      height : Ti.UI.SIZE, 
      width : Ti.UI.FILL, 
      left : 1, 
      text : address.street + " - " + address.ext_number, 
      font : { 
       fontSize : 12, 
       fontFamily : "Nunito-Bold", 
      }, 
      touchEnabled : false, 
      color: "#000" 
     }); 
     if (address.alias) 
      addressText.text = address.alias; 
     var separator = Ti.UI.createView({ 
      height : 5, 
      width : '100%', 
      top : 5, 
      bottom : 5, 
      backgroundColor : '#8C000000', 
      touchEnabled : false 
     }); 
     addressView.add(icoCont, addressText); 
     icoCont.add(icon); 
     $.container.add(addressView, separator); 
    }); 

結果:Android上でresult on iOS

そして、この:result on Android

私は本当にあなたがこれで私を助けることができると思います。

注:NuevadirecciónとDirecciónは実際には生成されません。これらはxmlファイルに存在します。

答えて

0

私は長い試行の後に試して&エラーを解決しました。誰かが同じ問題に直面した場合に備えて私の解決策を投稿しています。

Androidの中で、私はこの

​​

のような単一の命令で複数の要素を追加することはできません私がしなければならなかった唯一の事はそう

のような2で(各要素に1つ)、それを分離しているようです
addressView.add(icoCont); 
addressView.add(addressText); 
+0

Alloyデータバインディングを使用すると、作成しているコードの量を大幅に減らすことができます。シンプルなモックライブラリとBackbone Modelsとコレクションを使用することで、コントローラ内のJSの1行でコードを置き換え、XMLとTSSを単純化することができます。 結果はコードが少なくなり、合金のデータバインディングが提供するすべての機能を活用できます。 小さなモックライブラリを使って配列をコレクションに変換する[Todoの簡単なアプリケーションの例](https://github.com/appcdev/imagine-workshops-todo)があります。 – jasonkneen

+0

ありがとう、私はこのアプリケーションを後で改良するつもりですが、締め切りはとても近く、私はできるだけ早く終了しなければなりません。 –

0

単一のadd文で多くのビューを追加できますが、配列として渡す必要があります。addressView.add([icoCont、addressText]);

+0

私はそれをテストして、アプリケーションをクラッシュさせました。それは動作しません。とにかくありがとうございました。 –

+0

私はそれをDocsから読みましたが、おそらくドキュメントは時々更新されません。したがって、1つずつ追加する方が良いです。 –

関連する問題