ActivityNotFoundException:无法找到在清单中声明的 显式活动类

问题描述 投票:-2回答:1

我试图通过Intent发送内容(我认为这是我的错误的原因),我不断得到ActivityNotFoundException。这是将数据发送到Tab1.class的类(称为温度的字符串)

我在堆栈上发现了类似的问题,有人写道问题是在活动经过生命周期方法之前实例化意图引起的,但我不确定这是否是一个问题,我应该怎么做才能修复它

public class ChooseLayout extends AppCompatActivity implements View.OnClickListener {

    EditText editText;
    Button button;
    Weather weather;
    Parser parser = new Parser();
    SharedPreferences sharedPreferences;
    String temperature, preassure,WindSpeed,WindDirection,Humidity,ViewDescription;
    boolean isChecked = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.choose_layout);
        editText = (EditText) findViewById(R.id.editText);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (!isOnline()) {
                    Toast.makeText(getApplicationContext(), "Cannot connect to network, data will be restore from file with last downloaded data...", Toast.LENGTH_LONG).show();
                } else {
                    Thread t = new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                weather = parser.getWeatherForLocation(editText.getText() + "");
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        editText.setText(weather.getCity() + ",  " + weather.getCountry());
                                         temperature = weather.getTemperature();
                                    }
                                });
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    });
                    t.start();
                }
                Intent intent = new Intent(getApplicationContext(),Tab1.class);
                intent.putExtra("temperature", temperature);
                startActivity(intent);


            }
        });
        sharedPreferences = getSharedPreferences("file_name", MODE_PRIVATE);
    }

我在AndroidManifest.xml中声明了这个活动:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.chirag.slidingtabsusingviewpager">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

    </application>

</manifest>
java android activitynotfoundexception
1个回答
0
投票

您可以在活动中添加或替换片段。

然后在您的活动中对add片段执行此操作:

FragmentManager manager = getSupportFragmentManager();
Tab1 tab1 = new Tab1();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(android.R.id.content, tab1);
transaction.commit();

或者replace片段做到这一点:

FragmentManager manager = getSupportFragmentManager();
Tab1 tab1 = new Tab1();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(android.R.id.content, tab1);
transaction.commit();

要从fragment传递数据,您可以使用Bundle作为,

Bundle bundle = new Bundle();
bundle.putString("your_tag", your_string);
FragmentManager manager = getSupportFragmentManager();
Tab1 tab1 = new Tab1();
tab1.setArguments(bundle);
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(android.R.id.content, tab1);
transaction.commit();

要了解更多fragment-transaction,请查看此https://developer.android.com/reference/android/app/FragmentTransaction.html

© www.soinside.com 2019 - 2024. All rights reserved.