0

私は問題があります。このArcTimerActivityの設計にはレイアウトを使用したいと思います。 ITに変更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>
4

1 に答える 1

0

まず、任意のレイアウトに特定のIDを指定します。たとえば、そのcv(またはIntervalSession())を追加するxmlファイルでViewを指定します。

ここで、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();

このようにして、任意のビューをリソースレイアウトに動的に追加できます。

コメントはお気軽に。

アップデート

私があなたの要件のように実装した私のプロジェクトデモの1つがあります。以下のコードスニペットを参照してください。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 に答える