2013-11-20 28 views
1

我有兩個班,一個是public class range extends LinearLayout如何在Android 4.3中啓動類(該類擴展了LinearLayout)的Activity?

另一個是public class Main extends Activity

,我使用MyWindowManager.createBigWindow(getApplicationContext());調用範圍類

範圍類:

public class Out_of_range extends LinearLayout { 

    public static int viewWidth; 
    public static int viewHeight; 

    public Out_of_range(final Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
     LayoutInflater.from(context).inflate(R.layout.out_of_range, this); 
     View view = findViewById(R.id.big_window_layout); 
     viewWidth = view.getLayoutParams().width; 
     viewHeight = view.getLayoutParams().height; 


     TextView text = (TextView)findViewById(R.id.text); 
     text.setText("loss :"+ Main.tempAddress); 

     Button back = (Button)findViewById(R.id.back); 

     back.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
        // TODO Auto-generated method stub 
/*---------------------------------------------------------------------------------------------- 
           //I want to start Activity when I click the button here. 

        final Intent mainintent = new Intent(getContext(), Main.class); 
       startActivity(mainintent); 

*/----------------------------------------------------------------------------------------------- 
       } 
      }); 

     } 

,我想從一個班開始活動(此類擴展的LinearLayout)

我使用的意圖,但它有錯誤。

方法startActivity(意向)是未定義的類型新View.OnClickListener(){}

+0

你不能重寫你的範圍類中的構造函數來將你的字符串值作爲參數嗎? 或者您也可以在您的範圍類中添加一個字符串值,並使用getter/setter訪問它。 –

+0

@DamienR。:對不起......我不明白第一個問題。 – Wun

回答

2

,你可以讓你的方法createBigWindow返回它剛創建的範圍對象

public static Out_of_range createBigWindow(Context context) { 
    WindowManager windowManager = getWindowManager(context); 
    int screenWidth = windowManager.getDefaultDisplay().getWidth(); 
    int screenHeight = windowManager.getDefaultDisplay().getHeight(); 
    if(bigWindow == null) { 
     bigWindow = new Out_of_range(context); 
     if(bigWindowParams == null) { 
      bigWindowParams = new LayoutParams(); 
      bigWindowParams.x = screenWidth/2 - Out_of_range.viewWidth/2; 
      bigWindowParams.y = screenHeight/2 - Out_of_range.viewHeight/2; 
      bigWindowParams.type = LayoutParams.TYPE_PHONE; 
      bigWindowParams.format = PixelFormat.RGBA_8888; 
      bigWindowParams.gravity = Gravity.LEFT | Gravity.TOP; 
      bigWindowParams.width = Out_of_range.viewWidth; 
      bigWindowParams.height = Out_of_range.viewHeight; 

     } 
     windowManager.addView(bigWindow, bigWindowParams); 
    } 

    return bigWindow; 
} 

和然後在你的Out_of_range類中創建一個方法來接收你想傳遞的字符串。

編輯:

//in your Out_of_range class 

public void receiveStringValue(String value) { 
    // do whatever you want 
} 

,並用它從你的主類使用createBigWindow方法之後:

Out_of_range range = MyWindowManager.createBigWindow(this); 
range.receiveStringValue(yourString); 

我沒有嘗試了這一點,但我認爲這是值得一試。

EDIT2:

現在你已經更新了你的問題它更清晰:在你的主

public class Out_of_range extends LinearLayout { 

public static int viewWidth; 
public static int viewHeight; 

public Out_of_range(final Context context, String value) { 
    super(context); 
    // TODO Auto-generated constructor stub 
    LayoutInflater.from(context).inflate(R.layout.out_of_range, this); 
    View view = findViewById(R.id.big_window_layout); 
    viewWidth = view.getLayoutParams().width; 
    viewHeight = view.getLayoutParams().height; 


    device = (TextView) findViewById(R.id.device); 
    device.setText("device = " + value); 


    Button back = (Button)findViewById(R.id.back); 

    back.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      MyWindowManager.removeBigWindow(context); 
     } 
    }); 

} 

而且,做這樣的事情:試試這個

MyWindowManager.createBigWindow(getApplicationContext(), "your value here"); 
+0

但我想從Main.class接收值並在out_of_range類中顯示。 – Wun

+0

我不確定如果我完全理解,你的Main類中有一個String值,並且想將它傳遞給你的out_of_range類,以便它可以以某種方式顯示它,對嗎? – spCoder

+0

剛剛更新了答案... – spCoder

0

我定義Main.class中的字符串,如public static String tempName;

而在範圍級別,請使用Main.tempName獲取該值。

相關問題