2016-12-12 1 views
0

OK、私は髪の毛を裂いています。Android Java:Javaで追加したときにボタンとTextViewsが表示されない(既存のXMLレイアウトに)

私は主なアクティビティの単純なデフォルト相対レイアウトXMLを持っていて、XMLのLinearLayoutも定義しています。私のJavaコードでは、LinearLayout行を水平方向に追加し、それをXML Linearlayout(IDで見つけたもの)に追加しました。その時、私はボタンやテキストビューをその行に加えたとき、彼らは完全に現れました。

しかし、別のアクティビティで同じことをしようとすると、TextViewまたはButtonsが表示されません。私はもともとバックグラウンドイメージを持っていて、ボタンとテキストビューをルートRelativeLayout(foundById)に直接追加しようとしましたが、.setXと.setYでそれらを移動する計画がありましたが、バックグラウンドを取り去り、特定のLinearlayout主なアクティビティ(テストの目的で、異常を取り除くため)、それでもそれらは表示されません。私は再編成し、永久にテストして、私が逃しているものを見ることができません。

は、ここで(テストのためにストリップダウン)私の現在のXMLです:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_open_template" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.mystuff.stupidapp.OpenTemplateActivity"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:id="@+id/openTemplateMain"> 
    </LinearLayout> 

</RelativeLayout> 

...と、ここに現在のコード(もストリップダウン)です:

public class OpenTemplateActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_open_template); 

     final Resources res = getResources(); 
     Intent intent = getIntent(); 
     String fileName = intent.getStringExtra(MainActivity.EXTRA_FILENAME); 

     DisplayMetrics displaymetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
     int screenHeight = displaymetrics.heightPixels; 
     int screenWidth = displaymetrics.widthPixels; 

     LinearLayout.LayoutParams rowLayoutParams = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, 
       LinearLayout.LayoutParams.MATCH_PARENT, 1.0f); 

     LinearLayout llMain = new LinearLayout(this); 
     llMain.setOrientation(LinearLayout.HORIZONTAL); 
     LinearLayout llMainParent = (LinearLayout) findViewById(R.id.openTemplateMain); 
     llMainParent.addView(llMain); 

     Button bTest = new Button(this); 
     bTest.setText("TESTB"); 
     llMain.addView(bTest); 


     //other code below unrelated. 
    } 
} 

アイデア、誰?お願いします?

答えて

1

類似の問題を抱えているユーザーのために自分自身の質問に回答してください: APKは固まっていましたが、コードでのみ表示されました。つまり、XMLテンプレートの変更(テキストやボタンや背景の追加/削除)は、プレイやデバッグのヒット時にテストデバイスに反映されます。しかし、コードの変更は反映されません。デバッグロギングでタグを変更したときに、ログに反映されなかったことに気付きました。私も、Toast風のポップアップが、手動で解雇され、IDE経由で再実行されることを言っていることに気づいたが、見栄えのために十分長く留まらなかった。

キャッシュとデータを消去すると、アプリケーションをアンインストールしてからIDEを再起動して問題を解決しました。コードの変更は予期したとおりに反映され、コード作成ビューも表示されます。

0

あなたはこのやAndroid Studioでのインスタント実行機能を無効にすることにより、将来的に起こってから似たようなのを防ぐことができます:https://stackoverflow.com/a/35169716/3662251

インスタント実行は基本的にインクリメンタルにあなたのコードをコンパイルし、唯一のデバイスに変更をプッシュします。残念なことに、現在の状態では、コードとランタイムの矛盾が頻繁に発生し、インスタント実行によってバグが実際に導入されたときに多くの無駄な時間を浪費する可能性があります。

関連する問題