2014-12-28 4 views
0

아마도 멍청한 질문 일지 모르지만 여전히 그렇습니다. 내 주요 활동 클래스가 다른 클래스를 사용하여 코드를 작성해야합니다. 이 클래스는 getPackageName(), 새로운 Intent 등과 같은 Activity의 함수를 사용합니다. 그래서이 클래스에 대한 setContentView에 필요한 도움이 필요합니다. 어떻게해야합니까?활동 없음 클래스의 활동 기능을 사용하십시오.

주요 활동도 : package com.example.testapp;

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends Activity 
{ 

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


     SetContentView cn = new SetContentView(); 
     cn.MySetContentView(R.layout.activity_main); 
    } 
} 

setViewClass를 : 패키지 com.example.testapp;

public class SetContentView 
    { 
     void MySetContentView(int activityMain) 
     { 

      setContentView(R.layout.activity_main); //no set content view if not activity 
     } 
    } 
+0

난 당신이 귀하의 질문에 조금 명확히 할 필요가 있다고 생각합니다. 왜 이걸하고 싶어? 예를 들어 'Activity'외부에서 컨텐트 뷰를 설정하는 것은 의미가 없습니다. 왜 그렇게하고 싶은지 설명하면 API를 완전히 해킹하고 깎는 대신 간단한 해결책이 될 것입니다. 또한'Application' 클래스에서'getPackageName'을 호출 할 수 있습니다.이 클래스는 하위 클래스로 분류 할 수 있습니다. – Darwind

답변

0

나는 바로 그것을 얻고 경우 MainActivity에 확장 한 후 Activity을 연장하는 루트 클래스를 가진 당신의 방법을 유지하고 시도 할 수 있습니다 : 다음

public class Helper extends Activity { 
    ... // your methods, e.g. MySetContentView 
    } 

과 :

public class MainActivity extends Helper { 
    ... // any call to methods in Helper 
    } 

동일한 코드를 공유하는 활동이 많은 경우 유용 할 수 있습니다. 모두 동일한 Helper 클래스를 확장 할 수 있지만 여전히 A입니다. 상황. 귀하의 경우에는

:

public class Helper extends Activity { 
     public void mySetContentView(int layout) { 
       setContentView(layout) 
     } 
    } 

한 다음 :

public class MainActivity extends Helper { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     mySetContentView(R.layout.your_layout); 
    } 
0
public class MainActivity extends Activity 
{ 
    private static MainActivity instance; 

    public static MainActivity getInstance() { 
      return instance; 
    } 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     instance=this; 
    } 
} 
public class OtherClass 
{ 
    protected void someMethod() { 
     MainActivity ma= MainActivity.getInstance(); 
    //use ma methods... 
    } 
}