1

アクティビティにリストビューがあります。初めてリストビュー項目をクリックすると、正常に動作します。戻るボタンを押してこのアクティビティに戻ると、アイテムをクリックできなくなります。このリストビューは android2 で正常に動作します。Android 4でテストすると、この問題が発生します。

ここでこの種の問題を見つけました。すべての「descendentFocusabilty」を試しましたが、まだ解決していません。私はほとんど同じ質問を投稿すべきではないことを知っています。しかし、そこではうまくいく答えが見つかりませんでした。

この問題を解決するのを手伝ってください。

これが私のchild1アクティビティです

public class TabChild1 extends NavigationActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tabchild1);

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);

     adapter.add("red");
     adapter.add("green");
     adapter.add("blue");
     ListView listView = (ListView) findViewById(R.id.listview);

        listView.setAdapter(adapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                ListView listView = (ListView) parent;
                String item = (String) listView.getItemAtPosition(position);
                Intent intent = new Intent(TabChild1.this, TabChild2.class);
                int iNum = position;
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                goNextHistory("TabChild2", intent);   
            }
        });

}

@Override
public void onBackPressed() {
    super.onBackPressed();
}

}

ここに私のNavigationActivityがあります

public class NavigationActivity extends Activity {
public void goNextHistory(String id, Intent intent) {
    NavigationGroupActivity parent = ((NavigationGroupActivity) getParent());
    View view = parent.group.getLocalActivityManager()
            .startActivity(id,intent)
            .getDecorView();
    parent.group.replaceView(view);
}

@Override
public void onBackPressed() {
    NavigationGroupActivity parent = ((NavigationGroupActivity) getParent());
    parent.back();
}

}

ここに私のNavigationGroupActivityがあります

public class NavigationGroupActivity は ActivityGroup {

ArrayList<View> history; 
NavigationGroupActivity group;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    history = new ArrayList<View>();
    group = this;
}

public void changeView(View v) {
    history.remove(history.size() - 1);
    history.add(v);
    setContentView(v);
}

public void replaceView(View v) {
    history.add(v);
    setContentView(v);
}

public void back() {
    if(history.size() > 1) {
        history.remove(history.size() - 1);
        setContentView(history.get(history.size() - 1));
    } else {
        finish();
    }
}

@Override
public void onBackPressed() {
    group.back();
    return;
}

}

そして私のchild1レイアウトファイル

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ListView
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

4

1 に答える 1

1

クラスTabChild1のonBackPressed()メソッド内でfinish()を使用する必要があると思います。 クラス NavigationActivity の onBackPressed() メソッド内の行parent.back()にコメントを付けます。これでうまくいくと思います。

于 2012-10-29T07:58:25.840 に答える