以下是一个使用Android AnyChart库和BottomNavigationView切换图表的解决方法:
implementation 'com.anychart:AnyChart-Android:1.1.2'
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.anychart.AnyChart;
import com.anychart.AnyChartView;
import com.anychart.chart.common.dataentry.DataEntry;
import com.anychart.chart.common.dataentry.ValueDataEntry;
import com.anychart.charts.Pie;
import java.util.ArrayList;
import java.util.List;
public class ChartFragment extends Fragment {
private AnyChartView anyChartView;
public static ChartFragment newInstance() {
ChartFragment fragment = new ChartFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_chart, container, false);
anyChartView = view.findViewById(R.id.anyChartView);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setupChart();
}
private void setupChart() {
Pie pie = AnyChart.pie();
List data = new ArrayList<>();
data.add(new ValueDataEntry("Apples", 15));
data.add(new ValueDataEntry("Bananas", 10));
data.add(new ValueDataEntry("Cherries", 5));
pie.data(data);
anyChartView.setChart(pie);
}
}
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import android.os.Bundle;
import android.view.MenuItem;
import com.google.android.material.bottomnavigation.BottomNavigationView;
public class MainActivity extends AppCompatActivity {
private BottomNavigationView bottomNavigationView;
private ChartFragment chartFragment;
private AnotherChartFragment anotherChartFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomNavigationView = findViewById(R.id.bottomNavigationView);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.action_chart:
switchFragment(chartFragment);
return true;
case R.id.action_another_chart:
switchFragment(anotherChartFragment);
return true;
default:
return false;
}
}
});
chartFragment = ChartFragment.newInstance();
anotherChartFragment = AnotherChartFragment.newInstance();
switchFragment(chartFragment);
}
private void switchFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.chartContainer, fragment)
.commit();
}
}
请确保在res/menu文件夹中创建一个名为bottom_navigation_menu的菜单文件,其中包含用于切换图表的菜单项。
这样,当用户通过BottomNavigationView切换菜单项时,将会切换到相应的图表。