2012-06-11 7 views
3

레이아웃 (예 : 색상) 만 변경하는 기존 활동을 확장 할 수 있습니까?레이아웃을 변경하는 활동 확장

나는 공유 라이브러리를 사용하고 있기 때문에 다른 사람들이 사용하고 있으므로 활동을 수정하면 안된다.

답변

2

새 활동을 매니페스트에 넣은 다음 의도 확인이 자녀 클래스로 이동해야합니다. 당신은 단지 활동을 연장 할 수있을뿐만 아니라 이것을 고치지 않고도 호출 할 수있을 것입니다 (적어도 그렇게 생각하지는 않습니다).

자바 또는 xml로 배경색을 설정할 수도 있습니다.

+0

배경색을 변경하고 자바 코드에 의한 버튼. 하지만 정말 레이아웃을 변경하려면 (장식 추가, 버튼/기능 추가, 중력 ecc 변경) Java 코드로 모든 것을해야하거나 원래의 모든 코드를 잃지 않고 다른 XML을 사용할 수있는 가능성이 있습니다 건설자? 어쨌든, 도와 줘서 고마워. – Mark

+0

두 가지 XML 파일을 상속받을 수 있다고 나는 믿지 않는다. 그러나 XML에서 스타일을 작성한 다음 Java의 한 줄을 통해 해당 스타일을 적용 할 수 있다는 점을 권장합니다. 그렇게하면 lib의 XML을 수정하지 않고 XML로 특성을 선언 할 수 있습니다. –

1

예 가능합니다. 단어는 extends입니다.

두 개의 활동이있는 경우 활동 1과 두 번째 활동 2. U 예 당신이 그것을 확장 및 방법에서 onCreate 무시하고 당신이 레이아웃의 변경 될 수 있습니다 사용자 정의 레이아웃에 의해 그것에 된 setContentView 메소드를 호출 할 수 Activity2 extends Activity1 그런 다음 유 Activity1.

+0

나는 똑같은 것을 게시하려고했다. – Proxy32

+1

확장에 대해 알고, 문제는 내가 레이아웃을 변경하고 싶습니다,하지만 super.onCreate() 자체 레이아웃을 생성 ... 난 그냥 색상과 요소를 다시 선언하지 않고 크기를 변경할 수 있습니까? – Mark

1

의 속성을 사용할 수 있습니다 사용할 수 있습니다.

+1

원본 클래스 onCreate()에 코드를 저장하여 부모 클래스가 변경된 경우에도 광산이 변경됩니다. (유일한 차이점은 그래픽이됩니다.) – Mark

1

예 그것은 다음과 같이 수행 할 수 있습니다 :

귀하의 일반적인 활동

public class BaseActivity extends Activity { 
.. 
.. 
} 

특정 활동

public class YourActivity extends BaseActivity { 
.. 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     //call the base class constructor FIRST 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.new_layout); //then change the layout 
    } 
} 
+1

이것은 내 생각 이었지만 setContentView를 호출하면 super.onCreate()가 생성 한 모든 내용이 지워집니다. – Mark

+0

끝까지 해결 했습니까? – Ewoks

0

예 여기, 당신의 활동을 확장 할 수있는 데모입니다 :

package com.test.intentdemo; 

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.widget.RelativeLayout; 

public class intentDemo extends Activity { 
    public static final String TAG="MyActivity"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     RelativeLayout lLayout = (RelativeLayout) findViewById(R.layout.the_id); 
     lLayout.setBackgroundColor(Color.parseColor("#000000")); 
    } 
} 

      if (Log.isLoggable(TAG,0)) 
      { 
       Log.e(TAG,"ERROR BEFORE"); 
       Log.i(TAG,"INFO BEFORE"); 
       Log.d(TAG,"DEBUG BEFORE"); 

        lLayout.setBackgroundColor(Color.parseColor("#000000")); 
        //SystemClock.sleep(2000); 
        try 
        { 
        Thread.currentThread(); 
        Thread.sleep(2000); 
        } 
        catch (Exception e) 
        { 
        //e.message(); 
        } 


       Log.e(TAG,"ERROR AFTER"); 
       Log.i(TAG,"INFO AFTER"); 
       Log.d(TAG,"DEBUG AFTER"); 
      } 
     } 
    } 

희망이 도움 :)

관련 문제