0

我有个问题。我想使用布局来设计这个 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) - 没有错误,只是黑屏。可能我需要添加或更改以在布局中显示活动?

   <?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>
4

1 回答 1

0

首先为任何布局提供一个特定的 id,比如在你的 xml 文件中查看你想要添加该 cv(或 IntervalSession())的位置。

现在 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 类对象添加到布局中。

希望这段代码对您有所帮助。

于 2012-12-28T10:35:54.323 回答