2017-07-05 38 views
0

我正在開發一個Android應用程序。在主要活動屏幕上有一個視圖,該視圖調用View類的onDraw方法。但包括觀點的正確方法是什麼?如何包含查看最佳方式並調用它?

  1. 包括在XML中的標籤的看法。視圖被繪製。

  2. 包括與無效的觀點()和XML的文件:onDraw有被稱爲兩次

  3. 包括與無效(視圖),並沒有在XML的文件標籤:什麼也不繪製

  4. 包括與的setContentView()的看法:圖繪,但沒有動作條了

你能不能給我一個提示如何解決呢? 因爲我們想要的東西,該視圖能夠: 1.如果我們通過單擊操作欄菜單轉到另一個活動,並使用向上按鈕返回,應該再次顯示舊視圖,而不是再次繪製。這怎麼可能。

  1. 通過點擊另一個Activity的按鈕,可以調用onDraw方法,並通過Intent指向MainActivity。

我希望有人能幫助我:)

主要活動的XML:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_main" /> 

</android.support.design.widget.CoordinatorLayout> 

主要活動內容XML:

 <?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="MainActivity" 
    tools:showIn="@layout/activity_main"> 


    <view 
     android:id="@+id/view" 
     class="MyView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintHorizontal_bias="0.437" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

</android.support.constraint.ConstraintLayout> 

主Actitivity

public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //XML-Layout über die Ressourcen Variable holen 
     setContentView(R.layout.activity_main); 

     //Toolbar als ActionBar hinzufügen 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     //Logo in Action Bar integrieren 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setLogo(R.drawable.hsd_logo_weiss); 
     getSupportActionBar().setDisplayUseLogoEnabled(true); 
} 
} 

回答

0

如果沒有理由不這樣做......
按照你在第一點說的去做。這是最簡單的方法,一旦你在XML寫的,你確認視圖regulary繪製,你可以參考它通過R對象與

findviewbyid(R.id.<viewID>)

只是要注意的母公司,確保你的視圖元素是他們應該在哪裏,根據正確的父母

至於意圖之間的切換,我不知道爲什麼它的行爲就像你描述的...前段時間我像你一樣使用操作欄,但我沒有這些問題。如果可以,儘量不要使用onDraw()方法。

至少,你可以從問題的原因中刪除它:)

+0

感謝您的回答。但有沒有可能不使用onDraw?然後視圖不繪製。或者我錯了?有沒有辦法來特別定義何時渲染視圖和何時採取舊狀態? – Tommy

+0

在Manifest中使用android:launchMode =「singleTop」。舊國家被採取。但只有在Android 7中有一個問題:當我按下向上按鈕時,設置Activity的所有更改都會被假定。但只能在設置屏幕上點擊應用按鈕時才能進行更改。在Andorid 5和6上它工作正常。 – Tommy

+0

如果我沒有記錯,在activity.xml中應該是調用權限(這是單詞......)「頁面」的設置,當你開始和離開時,除非代碼中有某些內容,**大多數可能是聽衆**,會修改其中的某些內容 –

相關問題