を使用する方法:私は2つのビューとメニュー定義している私のメインの活動ではAndroidの無効化()
再生回数: 1.カスタムビューゲームを 2.ボタン
BTNメニュー: 開き主な活動は、起動時にさまざまな活動にメニューのレイアウトが定義されている
をファイル
を開くためのアイテムは基本的に、それは何も持っていないカスタムビュー、およびボタンを描画します。次に、メニューの[開く]を使用してファイルをロードします。/sdcardディレクトリにファイルのリストを表示し、リストからファイルを選択します。その後、onListItemClick()はファイルを解析し、カスタムビューのデータ構造を更新します。それから私はメインの活動に戻るために戻る。今私は、ボタンを押した後に再描画を見たいと思うだろうが、それは何もしていないようだ。ボタンのOnClickListener()を実装し、game.invalidate()を呼び出しています。しかし、ボタンをクリックするとすぐにカスタムビューを再描画するようには見えません。私は、アプリケーションを終了する必要があります(戻るボタン)し、再描画を表示するには、アプリケーションを再度開きます。私はinvalidate()に関する他の記事を読んで、すぐにビューを再描画しませんでした。それを待ち行列にプッシュするだけで、アンドロイドは自由に行動を起こします。私は、私のアプリでAndroidが行動を取っていることを理解していないと分かりません。コード
//Main Activity
public class someActivity extends Activity {
someView myView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
Button btn1 = new Button(this);
btn1.setOnClickListener(forward);
myView = new someView(this);
layout.addView(myView);
layout.addView(btn1);
setContentView(layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.open:
Intent myIntent = new Intent();
myIntent.setClass(this, DirectoryBrowser.class);
startActivityForResult(myIntent,0);
return true;
case R.id.save:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private OnClickListener forward = new OnClickListener()
{
public void onClick(View v)
{
myView.invalidate();
}
};
//DirectoryBrowser Activity
public class DirectoryBrowser extends ListActivity
{
private List<String> items = null;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.open);
getFiles(new File("/sdcard").listFiles());
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id){
int selectedRow = (int)id;
if(selectedRow == 0){
getFiles(new File("/sdcard").listFiles());
}else{
File file = new File(items.get(selectedRow));
if(file.isDirectory()){
getFiles(file.listFiles());
}else{
try
{
//Parse file and update myView.data
}
catch (FileNotFoundException e)
{
Log.e("ERROR","File Not Found");
}
}
}
}
//Custom View someView
//...
@Override
public void onDraw(Canvas canvas)
{
//Redraw view here
}
解決策はありましたか? – ViVekH