在Android中从选项卡启动新活动时,“活动”为空
我在Android应用程序中遇到了一个问题。这是一个货币转换器应用程序。从选项卡启动新活动时,该活动为空。以下是我的MainActivity.java代码的一部分:在Android中从选项卡启动新活动时,“活动”为空,android,Android,我在Android应用程序中遇到了一个问题。这是一个货币转换器应用程序。从选项卡启动新活动时,该活动为空。以下是我的MainActivity.java代码的一部分: package com.example.currencyconverter; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.text.DecimalFormat;
package com.example.currencyconverter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.DecimalFormat;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
ProgressDialog progressBar;
private int progressBarStatus = 0;
EditText edittextdollars;
EditText edittexteuros;
TextView dollars;
TextView euros;
RadioButton dtoe;
RadioButton etod;
RadioGroup radiogroup;
Spinner spinner1;
Spinner spinner2;
Button calculate;
String[] tabTitle = {"Converter", "Currencies", "News"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnButton();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
final ActionBar actionBar = getActionBar();
actionBar.setSubtitle("Created By Rohit Nandakumar");
actionBar.setTitle("Currency Converter");
// Specify that tabs should be displayed in the action bar.
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Create a tab listener that is called when the user changes tabs.
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
String n = tab.getText().toString();
Toast.makeText(getApplicationContext(), "You have selected: " + n, Toast.LENGTH_LONG).show();
if (n.equals("Converter")) {
startActivity(new Intent (MainActivity.this, MainActivity.class));
}
if (n.equals("Currencies")) {
startActivity(new Intent (MainActivity.this, FirstActivity.class));
}
if (n.equals("News")) {
startActivity(new Intent (MainActivity.this, FirstActivity.class));
}
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
// hide the given tab
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
// probably ignore this event
}
};
// Add 3 tabs, specifying the tab's text and TabListener
for (int i = 0; i < 3; i++) {
actionBar.addTab(
actionBar.newTab()
.setText(tabTitle[i])
.setTabListener(tabListener));
}
}
private void addListenerOnButton() {
spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner2 = (Spinner) findViewById(R.id.spinner2);
calculate = (Button) findViewById(R.id.calculate);
edittextdollars = (EditText) findViewById(R.id.edittextdollars);
edittexteuros = (EditText) findViewById(R.id.edittexteuros);
}
public interface CurrencyConverter {
public double convert(String currencyFrom, String currencyTo) throws Exception;
}
public class YahooCurrencyConverter implements CurrencyConverter{
public double convert(String currencyFrom, String currencyTo) throws IOException {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://quote.yahoo.com/d/quotes.csv?s=" + currencyFrom + currencyTo + "=X&f=l1&e=.csv");
//HttpGet httpGet = new HttpGet("http://quote.yahoo.com/d/quotes.csv?s=USDEUR=X&f=l1&e=.csv");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpGet, responseHandler);
httpclient.getConnectionManager().shutdown();
return Double.parseDouble(responseBody);
}
}
@Override
public void onClick(View v) {
String text1 = spinner1.getSelectedItem().toString().trim();
String text2 = spinner2.getSelectedItem().toString().trim();
progressBar = new ProgressDialog(v.getContext());
progressBar.setCancelable(true);
progressBar.setMessage("File downloading ...");
progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressBar.setProgress(0);
progressBar.setMax(100);
progressBar.show();
if (text1.equals("US Dollar - USD") && text2.equals("Euro - EUR") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("USD","EUR");
}
if (text1.equals("US Dollar - USD") && text2.equals("Euro - EUR") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("EUR","USD");
}
if (text1.equals("Euro - EUR") && text2.equals("US Dollar - USD") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("EUR","USD");
}
if (text1.equals("Euro - EUR") && text2.equals("US Dollar - USD") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("USD","EUR");
}
if (text1.equals("Euro - EUR") && text2.equals("Euro - EUR") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertEurostoEuros();
}
if (text1.equals("Euro - EUR") && text2.equals("Euro - EUR") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
OppositeOfConvertEurostoEuros();
}
if (text1.equals("US Dollar - USD") && text2.equals("US Dollar - USD") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertDollarstoDollars();
}
if (text1.equals("US Dollar - USD") && text2.equals("US Dollar - USD") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
OppositeOfConvertDollarstoDollars();
}
if (text1.equals("Indian Rupee - INR") && text2.equals("Indian Rupee - INR") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertEurostoEuros();
}
if (text1.equals("Indian Rupee - INR") && text2.equals("Indian Rupee - INR") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
OppositeOfConvertDollarstoDollars();
}
if (text1.equals("Indian Rupee - INR") && text2.equals("US Dollar - USD") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("INR","USD");
}
if (text1.equals("Indian Rupee - INR") && text2.equals("US Dollar - USD") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("USD","INR");
}
if (text1.equals("Indian Rupee - INR") && text2.equals("Euro - EUR") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("INR","EUR");
}
if (text1.equals("Indian Rupee - INR") && text2.equals("Euro - EUR") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("EUR","INR");
}
if (text1.equals("US Dollar - USD") && text2.equals("Indian Rupee - INR") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("USD","INR");
}
if (text1.equals("US Dollar - USD") && text2.equals("Indian Rupee - INR") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("INR","USD");
}
if (text1.equals("Euro - EUR") && text2.equals("Indian Rupee - INR") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("INR","EUR");
}
if (text1.equals("Euro - EUR") && text2.equals("Indian Rupee - INR") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("EUR","INR");
}
if (text1.equals("Japanese Yen - JPY") && text2.equals("Japanese Yen - JPY") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("JPY","JPY");
}
if (text1.equals("Japanese Yen - JPY") && text2.equals("Japanese Yen - JPY") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("JPY","JPY");
}
if (text1.equals("Japanese Yen - JPY") && text2.equals("US Dollar - USD") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("JPY","USD");
}
if (text1.equals("Japanese Yen - JPY") && text2.equals("US Dollar - USD") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("USD","JPY");
}
if (text1.equals("Japanese Yen - JPY") && text2.equals("Indian Rupee - INR") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("JPY","INR");
}
if (text1.equals("Japanese Yen - JPY") && text2.equals("Indian Rupee - INR") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("INR","JPY");
}
if (text1.equals("Japanese Yen - JPY") && text2.equals("Euro - EUR") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("JPY","EUR");
}
if (text1.equals("Japanese Yen - JPY") && text2.equals("Euro - EUR") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("EUR","JPY");
}
if (text1.equals("US Dollar - USD") && text2.equals("Japanese Yen - JPY") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("USD","JPY");
}
if (text1.equals("US Dollar - USD") && text2.equals("Japanese Yen - JPY") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("JPY","USD");
}
if (text1.equals("Euro - EUR") && text2.equals("Japanese Yen - JPY") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("EUR","JPY");
}
if (text1.equals("Euro - EUR") && text2.equals("Japanese Yen - JPY") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("JPY","EUR");
}
if (text1.equals("Indian Rupee - INR") && text2.equals("Japanese Yen - JPY") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
convertvalues("INR","JPY");
}
if (text1.equals("Indian Rupee - INR") && text2.equals("Japanese Yen - JPY") && edittexteuros.length() > 0 && edittextdollars.length()==0) {
convertvalues2("JPY","INR");
}
else {
System.out.println("");
}
progressBar.hide();
}
/* public void convertDollarstoEuros() {
double current;
double val = Double.parseDouble(edittextdollars.getText().toString());
DecimalFormat df = new DecimalFormat(".##");
YahooCurrencyConverter ycc = new YahooCurrencyConverter();
//current = ycc.convert("USD", "EUR");
//edittexteuros.setText(df.format(val*current));
//edittexteuros.setText(df.format(6));
try {
current = ycc.convert("USD", "EUR");
//System.out.println(current);
edittexteuros.setText(df.format(val*current));
}
catch (Exception e) {
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
//return errors.toString();
}
// e.printStackTrace();
//edittexteuros.setText(df.format(6));
}
public String convertDollarstoEuro1() {
double current;
double val = Double.parseDouble(edittextdollars.getText().toString());
DecimalFormat df = new DecimalFormat(".##");
YahooCurrencyConverter ycc = new YahooCurrencyConverter();
//current = ycc.convert("USD", "EUR");
//edittexteuros.setText(df.format(val*current));
//edittexteuros.setText(df.format(6));
try {
current = ycc.convert("USD", "EUR");
//System.out.println(current);
edittexteuros.setText(df.format(val*current));
return "passed";
}
catch (Exception e) {
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
return errors.toString();
// e.printStackTrace();
//edittexteuros.setText(df.format(6));
}
}
*/
public String convertvalues(String convertfrom, String convertto) {
double current;
double val = Double.parseDouble(edittextdollars.getText().toString());
DecimalFormat df = new DecimalFormat(".##");
YahooCurrencyConverter ycc = new YahooCurrencyConverter();
try {
current = ycc.convert(convertfrom, convertto);
edittexteuros.setText(df.format(val*current));
return "passed";
}
catch (Exception e) {
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
return errors.toString();
}
}
public String convertvalues2(String convertfrom2, String convertto2) {
double current;
double val=Double.parseDouble(edittexteuros.getText().toString());
DecimalFormat df = new DecimalFormat(".##");
YahooCurrencyConverter ycc = new YahooCurrencyConverter();
try {
current = ycc.convert(convertfrom2, convertto2);
edittextdollars.setText(df.format(val*current));
return "passed";
}
catch (Exception e) {
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
return errors.toString();
}
}
}
package com.example.currencyconverter;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.io.StringWriter;
导入java.text.DecimalFormat;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.ResponseHandler;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.impl.client.BasicResponseHandler;
导入org.apache.http.impl.client.DefaultHttpClient;
导入android.app.ActionBar;
导入android.app.Activity;
导入android.app.Fragment;
导入android.app.FragmentTransaction;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.Bundle;
导入android.os.StrictMode;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.RadioButton;
导入android.widget.RadioGroup;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MainActivity扩展活动实现OnClickListener{
ProgressDialog progressBar;
private int progressBarStatus=0;
编辑文本编辑文本美元;
编辑文本编辑文本欧元;
TextView美元;
TextView欧元;
单键dtoe;
无线电按钮etod;
放射组放射组;
喷丝器喷丝器1;
喷丝器喷丝器2;
按钮计算;
字符串[]tabTitle={“转换器”、“货币”、“新闻”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnButton();
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
最终ActionBar ActionBar=getActionBar();
actionBar.setSubtitle(“由Rohit Nandakumar创建”);
actionBar.setTitle(“货币转换器”);
//指定应在操作栏中显示选项卡。
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
//创建在用户更改选项卡时调用的选项卡侦听器。
ActionBar.TabListener TabListener=新建ActionBar.TabListener(){
已选择的公共事务(ActionBar.Tab选项卡,FragmentTransaction ft){
字符串n=tab.getText().toString();
Toast.makeText(getApplicationContext(),“您已选择:”+n,Toast.LENGTH\u LONG.show();
如果(n.等于(“转换器”)){
startActivity(新意图(MainActivity.this、MainActivity.class));
}
如果(n.等于(“货币”)){
startActivity(新意图(MainActivity.this,FirstActivity.class));
}
如果(n.等于(“新闻”)){
startActivity(新意图(MainActivity.this,FirstActivity.class));
}
}
已选择公共无效OnTab(ActionBar.Tab选项卡,FragmentTransaction ft){
//隐藏给定的选项卡
}
已重新选择公共void ontaber(ActionBar.Tab选项卡,FragmentTransaction ft){
//可能忽略此事件
}
};
//添加3个选项卡,指定选项卡的文本和TablListener
对于(int i=0;i<3;i++){
actionBar.addTab(
actionBar.newTab()
.setText(tabTitle[i])
.setTabListener(tabListener));
}
}
私有void addListenerOnButton(){
喷丝头1=(喷丝头)findViewById(R.id.spinner1);
喷丝头2=(喷丝头)findViewById(R.id.spinner2);
calculate=(按钮)findViewById(R.id.calculate);
edittextdollars=(EditText)findViewById(R.id.edittextdollars);
edittexteuros=(EditText)findViewById(R.id.edittexteuros);
}
公共接口电流转换器{
公共双转换(字符串currencyFrom、字符串currencyTo)引发异常;
}
公共类YahooCurrencyConverter实现CurrencyConverter{
公共双转换(字符串currencyFrom、字符串currencyTo)引发IOException{
HttpClient HttpClient=新的DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(“http://quote.yahoo.com/d/quotes.csv?s=“+currencyFrom+currencyTo+”=X&f=l1&e=csv”);
//HttpGet HttpGet=新的HttpGet(“http://quote.yahoo.com/d/quotes.csv?s=USDEUR=X&f=l1&e=.csv");
ResponseHandler ResponseHandler=新BasicResponseHandler();
字符串responseBody=httpclient.execute(httpGet,responseHandler);
httpclient.getConnectionManager().shutdown();
返回Double.parseDouble(responseBody);
}
}
@凌驾
公共void onClick(视图v){
String text1=spinner1.getSelectedItem().toString().trim();
String text2=spinner2.getSelectedItem().toString().trim();
progressBar=newprogressdialog(v.getContext());
progressBar.setCancelable(真);
setMessage(“文件下载…”);
progressBar.setProgressStyle(ProgressDialog.STYLE_水平);
progressBar.setProgress(0);
设置最大进度条(100);
progressBar.show();
如果(text1.equals(“美元-美元”)&&text2.equals(“欧元-欧元”)&&edittextdollars.length()>0&&edittexteuros.length()==0){
兑换价值(“美元”、“欧元”);
}
如果(text1.equals(“美元-美元”)&&text2.equals(“欧元-欧元”)&&edittexteuros.length()>0&&edittextdollars.length()==0){
兑换价值2(“欧元”、“美元”);
}
如果(text1.equals(“欧元-欧元”)&&text2.equals(“美元-美元”)&&edittextdollars.length()>0&&edittexteuros.length()==0){
兑换价值(“欧元”、“美元”);
}
如果(text1.equals(“欧元-欧元”)&&text2.equals(“美元-美元”)&&edittexteuros.length()>0&&edittextdollars.length(
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.currencyconverter"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET" />
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.currencyconverter.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.currencyconverter.FirstActivity"
android:label="@string/title_activity_first" >
</activity>
<activity
android:name="com.example.currencyconverter.OtherMainActivity"
android:label="@string/title_activity_other_main" >
</activity>
</application>
public void onTabSelected(Tab tab, FragmentTransaction ft) {