1

これらの各タブにそれぞれ割り当てられたフラグメントである ActionBar (4 つのタブを含む) を含むアクティビティがあります。これらのフラグメントでは、文字列値で満たされたいくつかの ListAdapter を割り当て、さらに操作したいクリック可能にしました。アイテムをクリックすると、そのアプリがそのフラグメントから別のフラグメントに送信されます。私は FragmentManager() と FragmentTransaction() を使用しなければならないことを知っていますが、私は Android 開発に慣れていないので、あらゆる種類の助けを求めています。

タブの 1 つのスニペット コード (UserFragment.java) は次のとおりです。

    import android.app.ListFragment;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;


/** This is a listfragment class */
public class UserFragment extends ListFragment 
{

    /** An array of items to display in ArrayList */
    String user_items[] = new String[]
    {
        "Account",
        "Addresses",         
        "Payment Providers",
        "Profile",
        "Transactions",
        "Wallet"
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {
        /** Creating array adapter to set data in listview */
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity().getBaseContext(), android.R.layout.simple_expandable_list_item_1, user_items);

        /** Setting the array adapter to the listview */
        setListAdapter(adapter);

        getListView().setOnItemClickListener(new OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parent, View view, int pos,
                    long id) 
            {
                Intent myIntent = new Intent(getActivity().getBaseContext(), Profile.class);
                startActivity(myIntent);            
            }       
        }); 
        return super.onCreateView(inflater, container, savedInstanceState);     
    }

    @Override
    public void onStart() 
    {
        super.onStart();

        /** Setting the multiselect choice mode for the listview */
        getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }
}

Profile.java アクティビティ コード:

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
public class Profile extends Activity 
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.profile_layout);

        //Button test = (Button) findViewById(R.id.btnTest);
    }
}
4

2 に答える 2

1

何が悪かったのかわかりました。長い検索の結果、onCreateView()メソッドが静的である場合は、リスナーを設定するのが適切であることがわかりましたが、この場合、文字列の配列アダプターを入力している間は、最初から実行する必要があります。したがって、ビューを作成しても、アプリはそれ以上のリスナーを作成できません。これを利用可能にするには、onActivityCreated(Bundle)をonCreateView( )メソッドとonStart()メソッドの間で開始/作成し、残りのコードを挿入する必要があります。

ListFragmentを別のFragmentActivityクラスにリンクするソリューションは次のとおりです。

public void onActivityCreated(Bundle savedInstanceState)
    {    
        super.onActivityCreated(savedInstanceState);

        getListView().setOnItemClickListener(new OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parent, View view, int pos,
                    long id) 
            {
                Intent myIntent = new Intent(getActivity().getBaseContext(), Profile.class);
                startActivity(myIntent);            
            }       
        });
    }
于 2012-10-29T13:08:39.653 に答える
1

アイテム クリック イベントを処理するOnItemClickListenerには、定義する必要があります。ListFragment例えば:

getListView().setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){
        // start your new activity here
    }
});
于 2012-10-29T11:14:22.053 に答える