Noob question here. I get a cannot find symbol error message for this line, actually I don't even have to run the code, the IDE complains before. textviewFirst is unknown to it.
TextView textView = binding.textviewFirst;
Here is the MainActivity.java file:
package com.example.rp;
import android.os.Bundle;
import com.google.android.material.snackbar.Snackbar;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.example.rp.databinding.ActivityMainBinding;
import android.view.Menu;
import android.view.MenuItem;
import com.example.rp.ApiService;
import com.example.rp.Post;
import java.util.List;
import retrofit2.Retrofit; // Import Retrofit
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.Call; // Import Call
import retrofit2.Callback; // Import Callback
import retrofit2.Response; // Import Response
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private AppBarConfiguration appBarConfiguration;
private ActivityMainBinding binding;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
//TextView textView = findViewById(R.id.textview_first);
TextView textView = binding.textviewFirst;
setSupportActionBar(binding.toolbar);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
binding.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAnchorView(R.id.fab)
.setAction("Action", null).show();
}
});
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("/") // Base URL
.addConverterFactory(GsonConverterFactory.create()) // Gson converter for JSON parsing
.build();
// Create the API service instance
ApiService apiService = retrofit.create(ApiService.class);
// Make the network request
Call<List<Post>> call = apiService.getPosts();
// Execute the call (synchronously for simplicity here)
call.enqueue(new Callback<List<Post>>() {
@Override
public void onResponse(Call<List<Post>> call, Response<List<Post>> response) {
if (response.isSuccessful()) {
List<Post> posts = response.body(); // Get the list of users
try {
textView.setText(posts.toString());
} catch (Exception e) {
e.printStackTrace();
}
//
// Handle the response here
}
}
@Override
public void onFailure(Call<List<Post>> call, Throwable t) {
// Handle failure
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
return NavigationUI.navigateUp(navController, appBarConfiguration)
|| super.onSupportNavigateUp();
}
}
The textView itself is defined in fragment_first.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
xmlns:android=";
xmlns:app=";
xmlns:tools=";
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FirstFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<Button
android:id="@+id/button_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next"
app:layout_constraintBottom_toTopOf="@id/textview_first"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textview_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/lorem_ipsum"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/button_first" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
The strange thing is that it can resolve when I do like this:
//TextView textView = findViewById(R.id.textview_first);
Noob question here. I get a cannot find symbol error message for this line, actually I don't even have to run the code, the IDE complains before. textviewFirst is unknown to it.
TextView textView = binding.textviewFirst;
Here is the MainActivity.java file:
package com.example.rp;
import android.os.Bundle;
import com.google.android.material.snackbar.Snackbar;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.example.rp.databinding.ActivityMainBinding;
import android.view.Menu;
import android.view.MenuItem;
import com.example.rp.ApiService;
import com.example.rp.Post;
import java.util.List;
import retrofit2.Retrofit; // Import Retrofit
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.Call; // Import Call
import retrofit2.Callback; // Import Callback
import retrofit2.Response; // Import Response
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private AppBarConfiguration appBarConfiguration;
private ActivityMainBinding binding;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
//TextView textView = findViewById(R.id.textview_first);
TextView textView = binding.textviewFirst;
setSupportActionBar(binding.toolbar);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
binding.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAnchorView(R.id.fab)
.setAction("Action", null).show();
}
});
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://jsonplaceholder.typicode/") // Base URL
.addConverterFactory(GsonConverterFactory.create()) // Gson converter for JSON parsing
.build();
// Create the API service instance
ApiService apiService = retrofit.create(ApiService.class);
// Make the network request
Call<List<Post>> call = apiService.getPosts();
// Execute the call (synchronously for simplicity here)
call.enqueue(new Callback<List<Post>>() {
@Override
public void onResponse(Call<List<Post>> call, Response<List<Post>> response) {
if (response.isSuccessful()) {
List<Post> posts = response.body(); // Get the list of users
try {
textView.setText(posts.toString());
} catch (Exception e) {
e.printStackTrace();
}
//
// Handle the response here
}
}
@Override
public void onFailure(Call<List<Post>> call, Throwable t) {
// Handle failure
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
return NavigationUI.navigateUp(navController, appBarConfiguration)
|| super.onSupportNavigateUp();
}
}
The textView itself is defined in fragment_first.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android/apk/res/android"
xmlns:app="http://schemas.android/apk/res-auto"
xmlns:tools="http://schemas.android/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FirstFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<Button
android:id="@+id/button_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next"
app:layout_constraintBottom_toTopOf="@id/textview_first"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textview_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/lorem_ipsum"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/button_first" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
The strange thing is that it can resolve when I do like this:
//TextView textView = findViewById(R.id.textview_first);
Share
Improve this question
asked Mar 30 at 21:00
Anunnaki PriestAnunnaki Priest
154 bronze badges
2
- 2 Bindings are working as intended here - your activity inflates ActivityMainBinding but you're trying to reach a view from FragmentFirstBinding. You can forcefully findviewbyid to get into it but it's circumventing the bindings and bad practice. – Pawel Commented Mar 30 at 21:59
- Please trim your code to make it easier to find your problem. Follow these guidelines to create a minimal reproducible example. – Community Bot Commented Mar 31 at 15:34
1 Answer
Reset to default 1You are getting Unresolved reference and it is because you are trying to access it from MainActivity
class, but the TextView
you are trying to access is in FirstFragment
class.
Either declare the textView in you activity_main.xml
or try to access it in the fragment class.
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1743974816a4538483.html
评论列表(0条)