私はAndroidアプリの開発には初めてです。何かお尋ねしたいと思います。XML RelativeLayoutとSurfaceビューの結合
プログラムでアニメーション化して移動したいSurfaceView内にビットマップがあります。私はまた、ビットマップの移動を制御するために画面にボタンを配置したい。しかし、私はSurfaceViewにボタンを置くことができないので、main.xmlというXMLレイアウトでRelativeLayoutの中に宣言しました。ここで
は、それでは私がやろうとしていることは私のメインであるレイアウトで(もっと良い言葉を見つけることができません)SurfaceViewを「組み合わせる」ことです私のmain.xml内
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/main_layout" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Test Button" />
</RelativeLayout>
何です.xml。ここで
は、私はSurfaceView
/package com.src.test.view;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.RelativeLayout;
public class Main extends Activity {
private RelativeLayout _myXmlLayout;
private MyView _myView;
private Button _myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_myXmlLayout = (RelativeLayout) findViewById(R.id.main_layout);
_myView = new MyView(this);
_myButton = (Button) findViewById(R.id.button1);
_myXmlLayout.addView(_myButton);
_myXmlLayout.addView(_myView);
setContentView(_myXmlLayout);
}
}
wのレイアウトを組み合わせることを試みるが、それは私に、「アプリケーションが予期せず停止しました」エラーを与える私のMain.javaです。私はそれを間違っているのですか?もしそうなら、これを実装するより良い方法を提案できますか?
あなたの回答は高く評価されます。ありがとう!
p.s.ビットマップアニメーションコードとボタンコントロールはまだありません。私が現在解決しているのは単なる見解です。 :)
EDIT:
私は私のコードを編集し、ここにある:
ので、ここで私の編集したMain.java
package com.src.test.view;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
}
だとここに私のmain.xmlが
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.src.test.view.MyView
android:id="@+id/myView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<Button
android:text="Test Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left" />
<Button
android:text="Test Button2"
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right" />
</FrameLayout>
です
私はそれを実行しようとしましたが、それは私にエラーを与えます。
ここでlogcatだ
(ZygoteInit.java:626)
10-29 01:18:51.046: E/AndroidRuntime(318): at dalvik.system.NativeStart.main(Native Method)
10-29 01:18:51.046: E/AndroidRuntime(318): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class com.src.test.view.MyView
10-29 01:18:51.046: E/AndroidRuntime(318): at android.view.LayoutInflater.createView(LayoutInflater.java:503)
10-29 01:18:51.046: E/AndroidRuntime(318): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
10-29 01:18:51.046: E/AndroidRuntime(318): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
10-29 01:18:51.046: E/AndroidRuntime(318): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
10-29 01:18:51.046: E/AndroidRuntime(318): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
10-29 01:18:51.046: E/AndroidRuntime(318): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
10-29 01:18:51.046: E/AndroidRuntime(318): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
10-29 01:18:51.046: E/AndroidRuntime(318): at android.app.Activity.setContentView(Activity.java:1647)
10-29 01:18:51.046: E/AndroidRuntime(318): at com.src.test.view.Main.onCreate(Main.java:12)
10-29 01:18:51.046: E/AndroidRuntime(318): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-29 01:18:51.046: E/AndroidRuntime(318): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
10-29 01:18:51.046: E/AndroidRuntime(318): ... 11 more
10-29 01:18:51.046: E/AndroidRuntime(318): Caused by: java.lang.NoSuchMethodException: MyView(Context,AttributeSet)
10-29 01:18:51.046: E/AndroidRuntime(318): at java.lang.Class.getMatchingConstructor(Class.java:660)
10-29 01:18:51.046: E/AndroidRuntime(318): at java.lang.Class.getConstructor(Class.java:477)
10-29 01:18:51.046: E/AndroidRuntime(318): at android.view.LayoutInflater.createView(LayoutInflater.java:475)
10-29 01:18:51.046: E/AndroidRuntime(318): ... 21 more
私はあなた自身のためにこれを過度に複雑さを考えるあなたの応答
おかげでコンストラクタを作成するのに役立ちます
は、私はあなたのコードを試してみましたが、私はまだ同じエラーを取得しています。追加のボタンだけであなたのXMLコードを追跡し、 'setContentView(_myXmlLayout)'を 'setContentView(R.layout.main)'に変更しました。何か不足していますか?ありがとうございます – src
ご質問に例外スタックトレースとlogcatの出力を投稿してください – Craigy
私はlogcatを含むオリジナルの投稿を編集しました。 Thanks – src