2015-11-25 16 views
-1

我在android中对我的字符串数组有点麻烦。 onClick工作正常,但不会显示新活动中点击项目的标题。当我说标题时,我的意思是在工具栏中。字符串数组onclick没有显示标题

<string-array name="states"> 
    <item>Alabama</item> 
    <item>Alaska</item> 
    <item>Arizona</item> 
    <item>California</item> 
    <item>Colorado</item> 
    <item>Connecticut</item> 
</string-array> 

这里是

public class FragmentState extends Fragment { 

    private ListView catagoryList; 
    private View root; 
    private TreeAdapter adapter; 

    public FragmentState() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     root = inflater.inflate(R.layout.fragment_scholar, container, false); 

     catagoryList = (ListView) root.findViewById(R.id.list); 
     adapter = new TreeAdapter(getActivity(), R.layout.item_catagory, getResources().getStringArray(R.array.categories)); 


     catagoryList.setAdapter(adapter); 

     catagoryList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Intent intent = new Intent(FragmentState.this.getActivity(), StateView.class); 
       startActivity(intent); 
      } 
     }); 

     return root; 

    } 

} 

我的,因为这是该片段代码在我的活动

public class StateView extends AppCompatActivity { 

    RecyclerView reship; 
    BulletinAdapter ship; 

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

     Toolbar toolbar = (Toolbar) findViewById(R.id.ptoolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     listTitle(); 
    } 

    private void listTitle() { 
     String[] list = getResources().getStringArray(R.array.categories); 
     int p = 0; 
     setTitle(list[p]); 
    } 
} 

上述工程的方法,但仅标题显示的第一个项目点击。我尝试使用Intents,但它不会显示标题。任何帮助将非常感激。

回答

0

你可以从FragmentState传递位置。

Intent intent = new Intent(FragmentState.this.getActivity(), StateView.class); 
intent.putExtra("STATE_POSITION", position); 
startActivity(intent); 

而且,检索它State活动,并把它传递给listTitle()

public class StateView extends AppCompatActivity { 

    RecyclerView reship; 
    BulletinAdapter ship; 

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

     Intent intent = getIntent(); 
     int statePosition = intent.getIntExtra("STATE_POSITION", 0); // Here 0 is default value in case `STATE_POSITION` was not sent via intent 

     Toolbar toolbar = (Toolbar) findViewById(R.id.ptoolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     listTitle(statePosition); 
    } 

    private void listTitle(int statePosition) { 
     String[] list = getResources().getStringArray(R.array.categories); 
     setTitle(list[statePosition]); 
    } 
} 
2

在你的代码只使用第一指标值:

int p = 0; 
    setTitle(list[p]); 
+0

我知道。这只是一个例子。如果我没有那个索引,那么标题什么也不显示。 –

+1

您需要向片段指示您想要从主要活动中显示哪种状态,以便您知道要在列表中选择哪一种。您也可以直接传递状态名称而不是使用列表。 –

0

首先为适配器

adapter = new TreeAdapter(getActivity(), R.layout.item_catagory, getResources().getStringArray(R.array.states)); 

改变字符串资源数组名,你有数组名称为国家不分类

第二遍Ë点击开始第二次活动

Intent intent = new Intent(FragmentState.this.getActivity(), StateView.class); 
intent.putExtras("position",position);     
startActivity(intent); 

三在第二活动前束位置读这束值,并将其赋值给一个变量

int selectedPosition=getIntent().getExtras().getInt("position",0); 

修改列表的标题方法

private void listTitle() { 
     String[] list = getResources().getStringArray(R.array.states); 

     setTitle(list[selectedPosition]); 
    }