我有一个活动,其中包含一个ActionBar(带有四个选项卡),一个分别分配给每个选项卡的片段。在这些片段中,我已经分配了一些填充了字符串值的ListAdapter,可点击进一步我想要操作。单击某个项目时,我希望该应用程序从该片段发送到另一个。我知道我必须使用FragmentManager()和FragmentTransaction(),但由于我是Android开发人员的新手,我需要任何帮助,感谢您的帮助。
以下是其中一个标签的代码段(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);
}
}
答案 0 :(得分:1)
您需要为OnItemClickListener
定义ListFragment
来处理项目点击事件。例如:
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){
// start your new activity here
}
});
答案 1 :(得分:1)
我发现了什么问题。经过长时间的搜索后,我了解到如果 onCreateView()方法是静态的,那么设置listener / s就好了,但在这种情况下,当我们填充一个字符串的数组适配器时,它是一个禁止的因为首先它必须创建它的View因此不会让应用程序进一步做出任何监听器。为了使其可用,应在 onCreateView()和 onStart()<之间启动/创建 onActivityCreated(Bundle) / strong>方法并插入其余代码。
以下是将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);
}
});
}