вкладка, просмотр списка и намерение - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть три 2 вкладки TabA и TabB.TabA отображает значение в порядке.Теперь в Tab2 у меня есть просмотр списка значений.Всякий раз, когда я щелкаю значение listitem, это значение должно передаваться следующему действию, и при каждом щелчке по элементу listItem должна создаваться новая вкладка на основе этого значения.Моя проблема внутри события click listitem intent = new Intent () не поддерживается.Мой код выглядит следующим образом

public class FriendLists extends TabActivity {
       //Declarations

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.friendtab);

        connection=XMPPLogic.getInstance().getConnection();
        Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost();  // The activity TabHost
        TabHost.TabSpec spec;  // Reusable TabSpec for each tab
        Intent intent;  // Reusable Intent for each tab

            lv=(ListView) findViewById(R.id.footerlist);

        adapter = new ArrayAdapter<String>(this,R.layout.listitems,R.id.list_content, my_own_listarray);
        lv.setAdapter(adapter);
        //end of listing friends
        final AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){

            @Override
            public void onItemClick( AdapterView<?> parent, View v, int position, long id){
      //problem is here when i try to put intent and pass String S it creates a problem                     
                String S=group.get(position).toString();

//              spec = tabHost.newTabSpec(S).setIndicator(S,
//                        res.getDrawable(R.drawable.tab_friendlist))
//                    .setContent(null);
//              tabHost.addTab(spec);

                // set the message to display
                alertbox.setMessage(S).show();  

            }});

        // Create an Intent to launch an Activity for the tab (to be reused)
        intent = new Intent().setClass(this,Friends.class);

        // Initialize a TabSpec for each tab and add it to the TabHost
        spec = tabHost.newTabSpec("friendlist").setIndicator("Friend List",
                          res.getDrawable(R.drawable.tab_friendlist))
                      .setContent(intent);
        tabHost.addTab(spec);

        tabHost.setCurrentTab(0);

        tabHost.addTab(tabHost.newTabSpec("onlinefriends").setIndicator("Online Friends",
                res.getDrawable(R.drawable.tab_friendlist))
                .setContent(R.id.footerlist));
    }

}

1 Ответ

0 голосов
/ 25 ноября 2011

Внутри анонимного внутреннего класса вы не можете ссылаться на неокончательную локальную переменную (intent), которая была объявлена ​​вне его.Вы хотите перейти на setContent.Просто объявите это внутри onItemClick:

Intent intent = new Intent( /* do your thing */ );
spec = tabHost.newTabSpec(S).setIndicator(S,
           res.getDrawable(R.drawable.tab_friendlist))
       .setContent(intent);
tabHost.addTab(spec);
...