0

单击列表视图的任何项目后,我希望启动一个新活动。当我通过模拟器运行它时,我的应用程序每次都会崩溃。我很肯定我的 AndroidManifest 也是正确的。任何帮助表示赞赏。

public static class SectionFragment extends ListFragment {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    public static final String ARG_SECTION_NUMBER = "section_number";
    private String dataArrayOne[];
    private String dataArrayTwo[];

    public SectionFragment() {
        dataArrayOne = new String[] {
                "Steven's Portfolio",
                "Sean's Portfolio",
                "Logan's Portfolio",
        };

        dataArrayTwo = new String[] {
                "GOOG",
                "YHOO",
                "AAPL",
                "MSFT"
        };
    }

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        switch(getArguments().getInt(ARG_SECTION_NUMBER))
        {
        case 0:
            ListAdapter listAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, dataArrayOne);
            setListAdapter(listAdapter);
            break;
        case 1:
            ListAdapter listAdapter1 = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, dataArrayTwo);
            setListAdapter(listAdapter1);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_main_dummy, container, false);
    }

    @Override
    public void onListItemClick(ListView list, View v, int position, long id)
    {
        Toast.makeText(getActivity(), getListView().getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();

        Intent intent = new Intent(getActivity(), Portfolio_Select.class);
        intent.putExtra("USERNAME", getListView().getItemAtPosition(position).toString());
        startActivity(intent);

    }

AndroidManifest.xml

<activity
        android:name=".Portfolio_Select"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</activity>

投资组合_选择代码

public class Portfolio_Select extends Activity {

    // variables go here

    TextView display;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(com.example.stockticker.R.layout.activity_main);



        display.setText("Stocks go here!");


    }


}
4

1 回答 1

2
TextView display;

被声明,但它总是引用,null因为findViewById()它没有被用来给它任何其他东西。

这意味着当

display.setText("Stocks go here!");

被调用,你会得到一个 NPE。

因此,请确保您有一个带有 id的TextViewin ,然后用于提供该参考R.layout.activity_mainfindViewById()displayTextView

setContentView(com.example.stockticker.R.layout.activity_main);

display = (TextView) findViewById (R.id.your_text_view_id);

display.setText("Stocks go here!");

如果还有其他问题,请将堆栈跟踪添加到您的问题中,这样就不会涉及其他猜测。

于 2013-04-18T00:43:59.387 回答