我有:setContentView(cv)但需要:setContentView(R.layout.arc_timer_activity) - 不起作用

时间:2012-12-28 10:21:20

标签: android android-layout layout android-activity

我有问题。我想使用布局来设计这个ArcTimerActivity。 当我将setContentView(cv)更改为setContentView(R.layout.arc_timer_activity)时,它无法正常工作。 (我不是程序员,所以对我来说不容易)

public class ArcTimerActivity extends Activity implements Runnable, View.OnClickListener, View.OnLongClickListener {

    private ArcTimerView cv = null;
    private Thread t = null;
    private boolean run_thread = false;
    private int run_thread_fps = 50; // Max 1000

    private IntervalSession is;

    private final int MENU_PREFERENCES = 15;

    //@Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);


        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        is = new IntervalSession();
        restorePreferences();

        cv = new ArcTimerView(this, is);

        cv.setOnClickListener(this);
        cv.setOnLongClickListener(this);

        restoreRunningState(getLastNonConfigurationInstance());

        setContentView(cv);
    }


   ....................

如果使用setContentView(R.layout.arc_timer_activity) - 没有错误,只有黑屏。 Maby我需要添加或更改smth以在布局中显示活动吗?

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
 android:layout_height="fill_parent"
android:orientation="vertical"

 >

 <View
android:layout_width="fill_parent"
android:layout_height="fill_parent"
></View>

  </LinearLayout>

1 个答案:

答案 0 :(得分:0)

首先给任何布局赋予一个特定的id,然后在你想要添加cv(或IntervalSession())的xml文件中查看。

现在setContentView(R.layout.arc_timer_activity);

现在,定义资源视图的对象,如下所示:

     <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
 android:layout_height="fill_parent"
android:orientation="vertical"

 >

 <View
android:id="@+id/myView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
></View>

  </LinearLayout>

现在在Jva文件中为该id提供资源

View myView = (View) findViewById(R.id.myView);

现在创建要添加的视图的对象。

cv = new ArcTimerView(this, is);

并将其添加到您的视图中。

myView.add(cv); // or myView.addView(cv);
invalidate();

这样,您可以动态地将任何视图添加到资源布局中。

随意发表评论。

<强>更新

我的项目演示中有一个我已按照您的要求实施。请参阅下面的代码段。 MyView是我添加的电话。专注于它。

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(new MyView(this)); // Edited
    statusString="testing Post For Application Development"; 
    setContentView(R.layout.main);
    display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    drawingLayout = (RelativeLayout)findViewById(R.id.drawingLayout);
    System.out.println("The Layout is: "+drawingLayout);
    myView = new MyView(this);
    drawingLayout.addView(myView);

    display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    // Setting mPaint 
    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setDither(true);
    mPaint.setColor(0xFFFF0000);
    mPaint.setStyle(Paint.Style.STROKE);
    mPaint.setStrokeJoin(Paint.Join.ROUND);
    mPaint.setStrokeCap(Paint.Cap.ROUND);
    mPaint.setStrokeWidth(7);

在上面的代码中,MyView是我想要添加到布局中的类。请参考该代码,您将了解如何将MyView类对象添加到布局中。

希望此代码可以帮助您。