また、プログラムで画像を変更できるようにして、リスナーをアタッチし、特定のポイントで画像を変更できるようにしたいです。私はこれの初期段階にあり、自分が持っているビューを設定するのに問題があります。
//inside my activity
LinearLayout mLayout;
//then inside the oncreate
mLayout = (LinearLayout) findViewById(R.id.main1);
setContentView(mLayout);
mLayout.setBackgroundResource(R.drawable.pic);
これはEclipseで正常にコンパイルされますが、実行するとアプリが起動しません。
音楽付きのスライドショーを作成したいと思っています。
以下の解決策を試しましたが、まだエラーが発生しています。
12-06 11:51:11.656:E / AndroidRuntime(238):キャッチされていないハンドラー:キャッチされていない例外のためにスレッドメインが終了します
最終的には、プログラムで背景画像を設定できるスライドショーが必要なので、リスナーを介して背景を設定できるように、ビューのハンドルを取得しようとしています。
ビューres/layout/slider.xmlを設定しました
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main2"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SeekBar android:id="@+id/seek"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:secondaryProgress="75" />
<TextView android:id="@+id/progress"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView android:id="@+id/tracking"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
SeekBar mSeekBar;
TextView mProgressText;
TextView mTrackingText;
LinearLayout mLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSeekBar = (SeekBar)findViewById(R.id.seek);
mSeekBar.setOnSeekBarChangeListener(this);
mProgressText = (TextView)findViewById(R.id.progress);
mTrackingText = (TextView)findViewById(R.id.tracking);
setContentView(R.layout.slider);
mLayout = (LinearLayout) findViewById(R.id.main2);
setContentView(mLayout);
mLayout.setBackgroundResource(R.drawable.mumbai);
}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
mProgressText.setText(progress + " " +
getString(R.string.seekbar_from_touch) + "=" + fromTouch);
//mLayout = (LinearLayout) findViewById(R.id.main1);
//mLayout.setBackgroundResource(R.drawable.boats);
}
public void onStartTrackingTouch(SeekBar seekBar) {
mTrackingText.setText(getString(R.string.seekbar_tracking_on));
}
public void onStopTrackingTouch(SeekBar seekBar) {
mTrackingText.setText(getString(R.string.seekbar_tracking_off));
}
}
こんにちはPratickは、以下に書いたように、まだエラーが発生しています。
12-06 13:02:34.074:E / AndroidRuntime(808):キャッチされていないハンドラー:キャッチされていない例外のためにスレッドメインが終了します
私はそれが非常に有益であるとは思わないが。これは、setContentView(mLayout)への2番目の呼び出しをコメントアウトした後です。
デバッガーを実行したところ、mSeekBar.setOnSeekBarChangeListener(this)でエラーが発生しました。
提案に成功せず、新しい戦術を試しました。現在、LayoutInflaterを使用しようとしていますが、AVDで同じエラーが発生し、コードをステップ実行すると、終了しようとしていると思います。 'inflater.inflate'を呼び出す行は、「ソースが見つかりません」というエラーを表示し、デバッガーのコードペインにナビゲートできるウィンドウを表示します。xmlで2つのビューを作成しましたが、保存したときにエラーが発生しませんでした
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class PwdDialogActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LayoutInflater inflater = (LayoutInflater) getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
final View layout = inflater.inflate(R.layout.password_dialog,
(ViewGroup)findViewById(R.id.root));
//layout.setBackgroundResource(R.drawable.boats);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
builder.setTitle(R.string.app_name);
}
}
このエラーと前のエラーはコードとは関係がなく、私の設定にもっと関係があるのではないかと思います。しかし、バージョン3で実行するプロジェクトとAVDを作成しました。LayoutInflaterを調べたところ、バージョン1以降のものであると表示されています。